一. 背景知识:
就我所知,在java中有四种解析xml的方法:dom4j、jdom、dom、sax
二. DOM解析(dom4j/jdom/dom) 与 SAX解析:
1. 如果打算对数据作出更改并将它输出为xml,那么DOM是适当的选择
2.对于大型文件,sax是最佳选择
3. 如果你需要引用已处理过的大量信息,那就选DOM吧。
三. 性能比较:
1) dom4j性能最好,目前很多开源项目使用dom4j。
2) JDOM和DOM在性能测试表现不佳,测试10M文档时内存溢出,如果是小文档可以考虑使用
3) SAX表现还可以,这要依赖于它特定的解析方法 - 事件驱动
四. Jdom示例:
1. xml文件
<?xml version="1.0" encoding="UTF-8"?>
<CodeMap>
<Country code="ABW" mapsTo="AW" />
<Country code="AFG" mapsTo="AF" />
<Country code="AGO" mapsTo="AO" />
<Country code="UA" mapsTo="UA" />
<Country code="UZ" mapsTo="UZ" />
<Country code="YT" mapsTo="YT" />
</CodeMap>
2. Jdom解析
public class Jdom {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws Exception {
Map<String, String> map = new HashMap<String, String>();
SAXBuilder saxBuilder = new SAXBuilder(false);
FileInputStream inputstream = new FileInputStream("D:\\Country.xml");
InputStreamReader reader = new InputStreamReader(inputstream, "UTF-8");
Document documnet = saxBuilder.build(reader);
Element root = documnet.getRootElement();
List<Element> eList = root.getChildren();
for (Element element : eList) {
String key = element.getAttribute("code").getValue();
String value = element.getAttribute("mapsTo").getValue();
map.put(key, value);
}
System.out.println(map); // {UA=UA, AGO=AO, ABW=AW, AFG=AF, UZ=UZ, YT=YT}
}
}