您的位置:首页 > 移动开发 > Android开发

安卓中的XML解析

2016-06-27 07:54 447 查看
pull解析

public static List<Newslist> getList(String xmlStr) {// 解析XML文件的方法,返回Newslist对象的集合
List<Newslist> list = null;
try {
// XML解析器工厂实例
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 获得解析器对象
XmlPullParser parser = factory.newPullParser();

Reader reader = new StringReader(xmlStr);// 读取字符串
parser.setInput(reader);// 解析器解析读取的数据

Newslist newslist = null;
int type = parser.getEventType();// 获得解析的状态
int i = 0;//判断解析的标签名的变量

while (type != XmlPullParser.END_DOCUMENT) {

switch (type) {

case XmlPullParser.START_DOCUMENT:// 文档开始
list = new ArrayList<Newslist>();// 创建集合
break;
case XmlPullParser.START_TAG:// 标签开始(标签里面如果有值,可以在这里面取)

String str = parser.getName();

if ("news".equals(str)) {
// 创建对象,并且给id属性赋值 拿到标签里面的第一个属性的值(标签里面的值)
newslist = new Newslist(Integer.parseInt(parser.getAttributeValue(0)));
}
if ("title".equals(str)) {
i = 1;
}
if ("timelength".equals(str)) {
i = 2;
}

break;

case XmlPullParser.TEXT:// 标签之间的文本(标签之间有值需要在这里取值)
if (i == 1) {
newslist.setTitle(parser.getText());
}
if (i == 2) {
newslist.setTimelength((Integer.parseInt(parser.getText())));
}

i=0;
break;

case XmlPullParser.END_TAG:// 标签结束
if ("news".equals(parser.getName())) {
list.add(newslist);// 添加到集合
}

break;

default:
break;
}

parser.next();// 进行下一个标签
type = parser.getEventType();

}

return list;// 返回集合

} catch (Exception e) {
e.printStackTrace();
}

return null;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  xml JAVA android 解析