XML_PULL解析

Posted 技术丶从积累开始

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML_PULL解析相关的知识,希望对你有一定的参考价值。

  

1.获取XmlPullParser对象

XmlPullParserFactory factory = XmlPullParserFactory.newInstance();//先获取XmlPullParserFactory实例
XmlPullParser xmlPullParser = factory.newPullParser();//利用XmlPullParserFactory对象获取XmlPullParser对象

2.载入文件并解析的原理

/*载入文件*/
String s = "xml文档数据";
StringReader sr = new StringReader(s);//将数据转换成流
xmlPullParser.setInput(sr);//将数据放入XmlPullParser对象进行解析

解析原理:
技术分享

就像有根手指放在文档上,逐步处理START_TAG,END_TAG和END_DOCUENT不同的XML节点事件。

START_TAG:当手指放在标签的头部时

END_TAG:当手指放在标签的尾部时

END_DOCUMENT:当手指到达文章的尾部的时候

3.进行解析并获取解析数据

XmlPullParser解析有几个主要方法(属性值:<div id="" name="">节点的内容</div>   id and name就是节点属性值。。。 )

a.XmlPullParser.getEventType() : 【获取当前事件回调类型】
b.XmlPullParser.getName():【获取当前节点名字】
c.XmlPullParser.getAttributeValue(int index):【根据id获取节点属性值】
d.XmlPullParser.getAttributeValue(String namespace, String name):【根据name获取节点属性值】
e.XmlPullParser.nextText():【在回调节点START_TAG时,通过此方法获取节点全部内容】
 
XmlPullParser移动“手指”的方法:parser.next();
 

4.实例

private static final String XML_PEOPLE = "people";

public void parseItems(String xmlData){
    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();//创建Xml工厂
    XmlPullParser parser = factory.newParser();//创建Xml解析器
    StringReader sr = new StringReader(xmlData);//将xml数据转换成reader流
    parser.setInput(sr);//将数据放入解析器
    int eventType = parser.next();//指针下移,获取回调事件类型
    While(eventType != XmlPullParser.END_DOCUMENT){ //得到xml数据最后退出循环
      if (eventType == XmlPullParser.START_TAG && XML_PEOPLE.equals(parser.getName())){//事件为文章头部并且标签名为需要标签
        String name = parser.getAttributeValue(null,"name")//没有namespace就填null,获取属性为name的值
        String weight = parser.getAttributeValue(nuill,"weight")//获取属性为weight的值
    }
        eventType = parser.next();//指针下移
    }
}    

 

 

 

以上是关于XML_PULL解析的主要内容,如果未能解决你的问题,请参考以下文章

无法解析片段中的 findViewById [重复]

无法解析片段中的 ViewModelProvider 构造?

Relay.js 没有正确解析组合片段

Android 逆向使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )(代码片段

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

NodeJs GraphQL 片段解析器