XML文件的解析

xiaoxiao2021-02-28  85

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文件的解析方式;
转载请注明原文地址: https://www.6miu.com/read-65409.html

最新回复(0)