JAVA解析XML的四种方法
简单介绍一下四种解析XML的方法,由于我挫,所以花了一下才有点眉目。仅把我所记录下来的知识点写下来,如果有写的不对的请指教。(随笔吧)
1、DOM
DOM是与平台和语言无关的表示XML文档的官方W3C标准。是以层次结构组织的节点或信息片段的集合。允许在树中寻找特定的信息。分析结构需家在整个文档和构造层次结构,才能做其他的工作。采用了树形结构访问XML文档。
优点:
1、树在内存中是持久的;
2、在任何时候在树中上下导航,而不是想SAX一次性处理。
2、SAX
它在解析XML文档时可触发一系列事件,当发现给定的tag时,可激活一个回调方法,指明标签已找到。
优点:
1、分析立即开始,而不是等待所有数据被处理;
2、读取数据时检查数据,不需要将存储在内存中;
3、不必解析整个文档;
4、可再某个条件得到满足时停止解析。
缺点:
编码比较困难,而去很难同事访问同一个文档中的多处不同数据。
3、JDOM
比DOM实现更快,也被称为“JAVA标准扩展”。
与DOM的不同点:
1、JDOM使用具体类而不使用接口;
2、API使用了大量的Collections类。
有句总结性的话,不是很理解“使用20%的精力解决80%的JAVA/XML问题”,这么好的东西,都没人用?
JDOM自身不含解析器,使用SAX2解析器来解析和验证输入的XML文档。
4、DOM4J
完全独立的开发结果。提供了构建文档表示的选项,通过DOM4J API和标准DOM接口,具有并行访问功能。
DOM4J使用接口和抽象基本类方法。
非常优秀的JAVA XML API。s
性能优异,功能强大和极端易用使用的特点。
简单的说一下四种方法的比较:
1、DOM4J性能最好,如果在不考虑可移植性,就采用DOM4J。(我想问一下,如果可移植性,会有什么情况?)
2、JDOM和DOM在性能测试表现不佳,在测试10M文档会内存溢出。
参考了文档,写了一个DOM4J小程序:
<!--dom4j.xml-->
1 <?xml version="1.0" encoding="UTF-8"?>
2 <RESULT>
3 <VALUE>
4 <NO>赣F85644</NO>
5 <ADDR>江西省抚州市</ADDR>
6 </VALUE>
7
8 <VALUE>
9 <NO>苏A360QQ</NO>
10 <ADDR>江苏省南京市</ADDR>
11 </VALUE>
12 </RESULT>
<!--XMLReader.java-->
//导入一个dom4j.1.6.1.jar包
1 import java.io.File;
2 import java.util.Iterator;
3
4 import org.dom4j.Document;
5 import org.dom4j.Element;
6 import org.dom4j.io.SAXReader;
7
8 public class XMLReader {
9 public static void main(String[] args) {
10 try
11 {
12 File f = new File("dom4j.xml");
13 SAXReader reader = new SAXReader();
14 Document doc = reader.read(f);
15 Element root = doc.getRootElement();
16 Element foo;
17
18 for(Iterator i = root.elementIterator("VALUE"); i.hasNext();)
19 {
20 foo = (Element)i.next();
21 System.out.println("NO--" + foo.elementText("NO"));
22 System.out.println("ADDR:" + foo.elementText("ADDR"));
23 }
24 }catch(Exception e)
25 {
26 e.printStackTrace();
27 }
28 }
29 }
<!--RESULT-->
NO--赣F85644 ADDR:江西省抚州市 NO--苏A360QQ ADDR:江苏省南京市
浙公网安备 33010602011771号