關于xml本身的文法及使用的環境不多說了,網上有很多規則,
然對xml文檔進行解析,一般分為四種解析方式,基于java官方文檔的Dom 和Sax解析,還有就是基于 第三方jar包的 Jdom 和
Dom4j解析。
一、首先我們來看Dom解析:
1、定義工廠,使應用程式能夠從 XML 文檔擷取生成 DOM 對象樹的解析器。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
在應用程式擷取對 DocumentBuilderFactory 的引用後,它可以使用工廠來配置和擷取解析器執行個體。
使用DocumentBuilderFactory的目的是為了建立與具體解析器無關的程式,當DocumentBuilderFactory類的靜态方法
newInstance()被調用時,它根據一個系統變量來決定具體使用哪一個解析器。
2、擷取具體的dom解析器。
DocumentBuilder db = dbf.newDocumentBuilder();
當獲得一個工廠對象之後,使用它的靜态方法newDocumentBuilder(),可以獲得一個DocumentBuilder對象。
這個對象代表了具體的DOM解析器。
解析器的具體實作對于程式來說并不重要。
然後我們就可以使用這個解析器對xml文檔進行解析。
3、解析一個xml文檔,獲得document對象,以books.xml為例
Document document = db.parse("books.xml");
根據标簽名通路一個節點。
NodeList bookList = document.getElementsByTagName("book");
4、周遊節點
for (int i = 0; i < bookList.getLength(); i++) {
//獲得元素,将節點強制轉換為元素
Element element = (Element)bookList.item(i)
}
操作子節點的元素:element.getElementsByTagName("節點名").item(0)
擷取子節點value值可以使用getFirstChild().getNodeValue() 方法,
具體可以檢視API幫助文檔進行操作。
Dom 的優點:樹結構,直覺好了解,代碼易編寫,解析過程中樹結構儲存在記憶體中,易于修改、删除、重新排列等多種功能。
缺點:當xml檔案較大時,對記憶體的消耗比較大,記憶體容易溢出。