Android解析xml——pull

XmlPullParser

1.简介:pull解析是android推荐的解析方式。他是一个接口,所以使用的时候多用XmlPullParserFactory来实例化

1        /**
2          * 获得parser对象
3          */
4         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
5         XmlPullParser parser = factory.newPullParser();

2.设置命名标准控件

1 factory.setNamespaceAware(true);

3.读取is流并,设置编码

1 parser.setInput(is, "utf-8");

4.主要方法

 1             /**
 2              * 获得下一个节点,用于访问较高级别的标签,只能获得下面四个int值
 3              */
 4             parser.next();
 5             /**
 6              * 将返回一下四个属性
 7              */
 8             START_TAG:读取了一个开始标签。
 9             TEXT:返回文本信息,可以使用getText()方法获得信息。
10             END_TAG:读取了一个结束标签。
11             END_DOCUMENT:文档读取结束。

 5.根据xml的特点和pull解析的特点,有如下demo:

 1 public static List<Tittle_Content_contentInfo> xmlpull(InputStream is)
 2             throws XmlPullParserException, IOException {
 3         // 保存联系人
 4         ArrayList<Tittle_Content_contentInfo> infos = new ArrayList<Tittle_Content_contentInfo>();
 5         /**
 6          * 获得parser对象
 7          */
 8         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
 9         XmlPullParser parser = factory.newPullParser();
10         factory.setNamespaceAware(true);
11         parser.setInput(is, "utf-8");
12         parser.nextTag();
13         parser.nextTag();
14         parser.nextTag();
15         if ("succ".equals(parser.getAttributeValue(0))) {
16             getInfo(parser, infos);
17         } else {
18             return null;
19         }
20         return infos;
21     }
22 
23     /**
24      * 获得xml信息
25      * 
26      * @param parser
27      * @throws XmlPullParserException
28      * @throws IOException
29      */
30     public static void getInfo(XmlPullParser parser,
31             List<Tittle_Content_contentInfo> infos)
32             throws XmlPullParserException, IOException {
33         Tittle_Content_contentInfo info = null;
34         int type = parser.next();
35         while (type != XmlPullParser.END_DOCUMENT) {
36             if (XmlPullParser.START_TAG == type
37                     && "contentinfo".equals(parser.getName())) {
38                 info = new Tittle_Content_contentInfo();
39                 parser.nextTag();
40                 info.setContentid(parser.getAttributeValue(0));
41                 parser.nextTag();
42                 parser.nextTag();
43                 info.setBiaoti(parser.getAttributeValue(0));
44                 parser.nextTag();
45                 parser.nextTag();
46                 info.setNeirong(parser.getAttributeValue(0));
47                 parser.nextTag();
48                 parser.nextTag();
49                 info.setContentaddress(parser.getAttributeValue(0));
50                 infos.add(info);
51             }
52             type = parser.next();
53         }
54     }

数据接口:http://gusong.ltzsxx.com/GetContent.jsp?classid=1

原文地址:https://www.cnblogs.com/qinghuaideren/p/3068730.html