Java:簡單的解析XML檔案之使用DOM解析
XML簡介
要理解XML,HTML等格式,先來理解文件物件模型DOM
根據 DOM,HTML 文件中的每個成分都是一個節點,這些節點組成了一棵樹。
DOM 是這樣規定的:
整個文件是一個文件節點
每個 HTML 標籤是一個元素節點
包含在 HTML 元素中的文字是文字節點
每一個 HTML 屬性是一個屬性節點
註釋屬於註釋節點
節點彼此都有等級關係。HTML 文件中的所有節點組成了一個文件樹(或節點樹)。HTML 文件中的每個元素、屬性、文字等都代表著樹中的一個節點。樹起始於文件節點,並由此繼續伸出枝條,直到處於這棵樹最低級別的所有文字節點為止。
DOM將整個XML檔案載入到記憶體中,並構建出節點樹;應用程式可以通過遍歷節點樹的方式來解析XML檔案中的各個節點、屬性等資訊;
這種方式便於對XML節點的新增修改等,而且解析也很方便,然後它比較耗費記憶體,解析速度也不快
現在主要流行的是sax,dom4j和jdom
這章主要說使用DOM來解析
而使用DOM解析XML是有步驟的
1、建立解析器工廠物件 DocumentBuildFactory物件
2、由解析器工廠物件建立解析器物件,即DocumentBuilder物件
3、由解析器物件對指定XML檔案進行解析,構建相應的DOM樹,建立Document物件,生成一個Document物件
4、以Document物件為起點對DOM樹的節點進行查詢
5、使用Document的getElementsByTagName方法獲取元素名稱,生成一個NodeList集合,
6、遍歷集合
DocumentBuilderFactory factroy = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factroy.newDocumentBuilder();
Document document = builder.parse("pets.xml");
NodeList lists = document.getElementsByTagName("dog");
System.out.println("chengmuzhe養的狗狗的初始化資訊");
for (int i = 0; i < lists.getLength(); i++) { Node pet = lists.item(i); for (Node node = pet.getFirstChild(); node != null; node = node .getNextSibling()) { if (node.getNodeType() == Node.ELEMENT_NODE) { String name = node.getNodeName(); String value = node.getFirstChild().getNodeValue(); System.out.println(name + ":" + value + "\t"); } } } NodeList lists1 = document.getElementsByTagName("penguin"); System.out.println("chengmuzhe養的企鵝的初始化資訊"); for (int i = 0; i < lists1.getLength(); i++) { Node pet = lists1.item(i); for (Node node = pet.getFirstChild(); node != null; node = node .getNextSibling()) { if (node.getNodeType() == Node.ELEMENT_NODE) { String name = node.getNodeName(); String value = node.getFirstChild().getNodeValue(); System.out.println(name + ":" + value + "\t"); } } } } catch (Exception e) { // TODO: handle exception } }