XML
XML即可拓展標記語言。他是一種簡單的數據存儲語言,使用一系列簡單的標籤描述數據,這些標籤可以用方便的方式建立。
如pet.xml示例:
<?xml version="1.0" encoding="UTF-8"?> <pet> <dog id="1"> <name>小黑</name> <age>3</age> <weight>100</weight> </dog> <dog id="2"> <name>小白</name> <age>2</age> <weight>80</weight> </dog> </pet>
DOM解析XML
DOM 是Document Object Model的縮寫,即文檔對象模型。XML將數據組織爲一棵樹,所以DOM就是對這棵樹的一個對象的描述。通俗的說,就是通過解析XML文檔,爲XML文檔在邏輯上建立一個樹模型,樹的節點是一個個對象,我們通過存取這些對象就能夠存取XML文檔的內容。
見圖:
DOM解析代碼:
package Talking; import java.io.IOException; import java.io.ObjectInputStream.GetField; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class TestPetXml { public static void main(String[] args){ //從DOM工廠獲得DOM解析器 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //從DOM工廠獲得DOM解析器 DocumentBuilder db = dbf.newDocumentBuilder(); //解析XML文檔,得到一個Document,即DOM樹 Document doc = db.parse("f:/pet.xml"); //得到pet所有節點列表信息 NodeList perList = doc.getElementsByTagName("dog"); //輪循書本信息 System.out.println("XML文件中pet的初始化信息"); for(int i = 0;i<perList.getLength();i++){ //得到pet元素 Element dog = (Element) perList.item(i); //得到dog元素下的id屬性的值 String strId = dog.getAttributeNode("id").getNodeValue(); //得到dog元素下的name屬性 String strName = dog.getElementsByTagName("name").item(0).getFirstChild().getNodeValue(); //得到dog元素下的age屬性 String niAge = dog.getElementsByTagName("age").item(0).getFirstChild().getNodeValue(); //得到dog元素下的weight屬性 String weight = dog.getElementsByTagName("weight").item(0).getFirstChild().getNodeValue(); System.out.println("id:"+strId+",name:"+strName+",age:"+niAge+",weight:"+weight); } } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParserConfigurationException e) { e.printStackTrace(); } } }
輸出結果:
XML文件中pet的初始化信息
id:1,name:小黑,age:3,weight:100
id:2,name:小白,age:2,weight:80