XML序列化器(XmlSerializer)及 XML解析器(XmlPullParser)
作者:互联网
XML序列化器(XmlSerializer)
XmlSerializer是一个接口
1、通过XML类,获取序列化器
XmlSerializer xs = Xml.newSerializer();
2、给序列化器设置一个输出
/*
setOutput(OutputStream os, String encoding)
os 输出流
encoding 编码集
*/
fos = new FileOutputStream(file);
xs.setOutput(fos, "UTF-8");
3、文档设置
//开始写xml头
/*
startDocument(String encoding, Boolean standalone)
encoding 编码集
standalone 是否独立
*/
xs.startDocument("utf-8", true);
//标签address
/*
startTag(String namespace, String name)
namespace 名称空间 一种约束
name 标签名
//下面是没有名称空间的情况
*/
xs.startTag(null, "smss");
//设置标签内容
xs.text(sms.getAddress());
//标签结束,有开始必须有结束,参数说明同startTag
xs.endTag(null, "smss");
//文档结束
xs.endDocument();
XML解析(XmlPullParser)
1、获取XmlPullParser的参数
XmlPullParser parser = Xml.newPullParser();
2、设置输入
/*
setInputStream(InputStream is, String encoding)
is 输入流
encoding 编码集
*/
parser.setInput(in,"utf-8");
3、获取内容
//获取事件类型parser.getEventType()
int type = parser.getEventType();
//判断是否结束 type!=XmlPullParser.END_DOCUMENT
while(type!=XmlPullParser.END_DOCUMENT) {
switch (type) {
case XmlPullParser.START_TAG:
//parser.getName()获取标签名
if("weather".equals(parser.getName())) {
//创建集合对象
weatherList = new ArrayList<Channel>();
//parser.getAttributeValue(0)获取属性值
}else if("channel".equals(parser.getName())) {
channel = new Channel();
//获取id值
String id = parser.getAttributeValue(0);
channel.setId(id);
}else if ("city".equals(parser.getName())) {
//获取city属性
//parser.nextText()获取当前标签文本
String city = parser.nextText();
channel.setCity(city);
}else if ("temp".equals(parser.getName())) {
//获取<u>temp</u>属性
String temp = parser.nextText();
channel.setTemp(temp);
}else if ("pm250".equals(parser.getName())) {
String pm250 = parser.nextText();
channel.setPm250(pm250);
}else if ("wind".equals(parser.getName())) {
String wind = parser.nextText();
channel.setWind(wind);
}
break;
//判断是不是标签结尾,如果是,进行封装
case XmlPullParser.END_TAG:
if("channel".equals(parser.getName())) {
weatherList.add(channel);
}
}
//获取下一个解析类型
type = parser.next();
}
标签:XML,解析器,String,getName,parser,equals,XmlPullParser,序列化,channel 来源: https://www.cnblogs.com/lyhcc/p/10737761.html