XML文件的解析

1. Pull方式解析XML文件:
需要的jar包:kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar,xmlpull-1.1.3.1.jar
解析的步骤为:
1. 首先通过XmlPullFactory的实例对象获取一个XmlParser的对象parser
2. XmlParser对象parser通过setInput方法设置需要解析的内容及编码格式
3. 循环遍历整个xml文件(循环条件为当parser.END_DOCUMENT!=parser.getEventType时进行遍历,注意为int类型)
4. 遍历中设置条件语句,当parser.getEventType= XmlPullParser.START_TAG时....
5. 当parser.getEventType= XmlPullParser.END_TAG时....
6. 将结果保存至list中即可;

与解析json类似,从上至下解析;
遍历xml条循环条件为:
int eventType = parser.getEventType();
while (eventType != parser.END_DOCUMENT)
{
...
eventType = parser.next();
}
其中If条件句的条件,具体见下截图;
XML文件如下:
cfg.xml:
<?xml version="1.0" encoding="utf-8"?>
<root>
<student id="1" group="1">
<name>张三</name>
<sex>男</sex>
<age>18</age>
<email>zhangsan@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student id="2" group="2">
<name>李四</name>
<sex>女</sex>
<age>18</age>
<email>lisi@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student id="3" group="3">
<name>小王</name>
<sex>男</sex>
<age>18</age>
<email>xiaowang@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student id="4" group="4">
<name>小张</name>
<sex>男</sex>
<age>18</age>
<email>xiaozhang@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
<student id="5" group="5">
<name>小明</name>
<sex>男</sex>
<age>18</age>
<email>xiaoming@163.com</email>
<birthday>1987-06-08</birthday>
<memo>好学生</memo>
</student>
</root>


具体解析的代码为:




DOM解析XML文件:
DOM解析xml文件的缺点在于:解析之后的dom树会放在内存中,占用内存较大;
好处是:较直观;
原理:是将xml文件解析成DOM树,然后,在通过遍历从dom树种取得所需的数据信息;
步骤同pull解析大致相同,不需要导jar包;
-> DocumentBuilderFactory.newInstance()获取其对象;
-> 通过上一步的对象获取其builder;
-> 通过builder的parse(InputStream is)方法直接将xml文件解析(已经解析成功,接下来就是获取其中的数据)
对应的实体类:
解析的xml文件为:


同样可以通过DOM来生成xml文件;
对应生成的xml文件:


SAX方式解析:
也不需要导入jar包:
其解析方式与其他两种不同,是通过实现defaultHandler接口来具体实现解析的;

sax方式的解析,解析的时候,它 只会记得当时解析的那一条语句
对应的测试类:
对应的xml文件为:


通过SAX,同样可以生成xml文件:
生成的xml文件如下:


以上就是三种常用的xml文件的解析方式;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值