XmlPullParser 解析

来源:互联网 发布:mdi胶 知乎 编辑:程序博客网 时间:2024/05/17 09:37


总结
XmlPullParser

以事件驱动模型解析XML文件 ,其中事件有
XmlPullParser.START_DOCUMENT //文档开始事件
XmlPullParser.END_DOCUMENT   //文档结束事件
XmlPullParser.START_TAG      //标签开始事件
XmlPullParser.END_TAG        //标签结束事件
XmlPullParser.TEXT           //内容事件

在解析过程中XMLPullParser对象的获取
1、通过XML类获取
XmlPullParser parser =XML.newPullParser();
2、通过XMLPullParserFactory类获取
XmlPullParserFactory factory =XmlPullParserFactory.newInstance();
factory.setNameSpaceAwared(true);
XmlPullParser parser =factory.newPullParser();

其中可以把XmlPullPaser 对象以游标的思想去理解,其中一些基本方法如下
getEventType()获取当前的事件
next()进入下一个事件
getAttributeValue(int index) 获取当前事件下的的参数值 index表示参数的位置
例如
<Tag
attribute="attribute1"
attribute="attribute2"
>
</Tag>
getText()方法获取当前事件下标签所包含的文本值
例如
<Tag>I am the text1 </Tag>

按照以上逻辑解析以下XML文件
<?xml version="1.0" encoding="utf-8"?>
<classList>
 <class id="1"  age="19" //getAttributeValue(int index)  >一班</class>  //START_TAG
 <class id="2">二班</class> 
 <class id="3">三班</class>
 <class id="4">四班</class>
</classList>
1、开始解析 getEventType() 当前事件是START_DOCUMENT
2、next() 当前事件是START_TAG 其中当前标签是<classList>
3、next() 当前是事件是START_TAG 其中当前标签是<class>
4、通过当前是事件下的 getAttributeValue(1) 获取id值 getText()方法获取"二班"值。
以此类推
最后以END_DOCUMENT事件结束解析

再举个复杂点的栗子:
<?xml version="1.0" encoding="utf-8"?>  
<classList>
<class id="1" name="一班" >
<student id="1" >张三 </student>
<student id="2" >李四 </student>
</class>
<class id="2" name="二班" >
<student id="3" >王五</student>
<student id="4" >赵六</student>
</class>
<class id="3" name="三班" >
<student id="5" >小明</student>
<student id="6" >小高 </student>
</class>  
<class id="4" name="四班" >
<student id="7" >小花</student>
<student id="8" >小红 </student>
</class>  
</classList>

1、开始解析 getElementType() 当前事件类型是START_DOCUMENT
2、next() 当前事件类型是START_TAG 其中标签是<class> 可通过getAttributeValue(0) getAttributeValue(1)获取id和name值;
3、next() 当前事件类型是START_TAG 当前标签是<student> 可通过getAttributeValue(0)获取student的id值
以此类推
最后END_DOCUMENT事结束解析
 
以下由读者自己尝试解析:
<?xml version="1.0" encoding="utf-8"?>
<classList>  
<class id="1" name="一班" >
 <student id="1" >
  <name>张三</name>
  <sex>男</sex>
 </student>
 <student id="2" >
  <name>李四</name>
  <sex>男</sex>
 </student>
</class>
<class id="2" name="二班" >
 <student id="3" >
  <name>王五</name>
  <sex>男</sex>
 </student>
 <student id="4" >
  <name>赵六</name>
  <sex>男</sex>
 </student>
</class>
</classList>

0 0
原创粉丝点击