XML序列化器(XmlSerializer)
XmlSerializer是一个接口
1、通过XML类,获取序列化器
XmlSerializer xs = Xml.newSerializer();
/*
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");
//获取事件类型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();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。