java解析xml匯總
關鍵字:Java解析xml、解析xml四種方法、DOM、SAX、JDOM、DOM4j、XPath
【引言】
目前在Java中用於解析XML的技術很多,主流的有DOM、SAX、JDOM、DOM4j,下文主要介紹這4種解析XML文檔技術的使用、優缺點及效能測試。 一、【基礎知識——掃盲】
sax、dom是兩種對xml文檔進行解析的方法(沒有具體實現,只是介面),所以只有它們是無法解析xml文檔的;jaxp只是api,它進一步封裝了sax、dom兩種介面,並且提供了DomcumentBuilderFactory/DomcumentBuilder和SAXParserFactory/SAXParser(預設使用xerces解譯器)。 二、【DOM、SAX、JDOM、DOM4j簡單使用介紹】
1、【DOM(Document Object Model) 】
由W3C提供的介面,它將整個XML文檔讀入記憶體,構建一個DOM樹來對各個節點(Node)進行操作。為XML文檔的已解析版本定義了一組介面。解析器讀入整個文檔,然後構建一個駐留記憶體的樹結構,然後代碼就可以使用 DOM 介面來操作這個樹結構。
優點:整個文檔樹在記憶體中,便於操作,支援刪除、修改、重新排列等多種功能。
缺點:將整個文檔調入記憶體(包括無用的節點),浪費時間和空間。
使用場合:一旦解析了文檔還需多次訪問這些資料,硬體資源充足(記憶體、CPU)。
範例程式碼: <?xml version="1.0" encoding="UTF-8"?> <university name="pku"> <college name="c1"> <class name="class1"> <student name="stu1" sex='male' age="21" /> <student name="stu2" sex='female' age="20" /> <student name="stu3" sex='female' age="20" /> </class> <class name="class2"> <student name="stu4" sex='male' age="19" /> <student name="stu5" sex='female' age="20" /> <student name="stu6" sex='female' age="21" /> </class> </college> <college name="c2"> <class name="class3"> <student name="stu7" sex='male' age="20" /> </class> </college> <college name="c3"> </college> </university>
後文代碼中有使用到text.xml(該文檔放在src路徑下,既編譯後在classes路徑下),都是指該xml文檔。 package test.xml; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException;