使用 DOM 操作 XML 文檔

來源:互聯網
上載者:User

一.DOM簡介

    文件物件模型 (Document Object Model, DOM):是 XML 文檔的編程介面,定義如何在程式中訪問和操作 XML 文檔,是與平台和語言無關的介面,以樹結構表示 XML 文檔,通過提供一組對象對 XML 文檔結構的訪問,定義用於訪問和操作 XML 文檔的 API。

    編寫一個通過 DOM 訪問 XML 文檔的應用程式時需要: XML 解析器和DOM實現。使用 DOM 建立和操作 XML 文檔有助於避免:未封閉標籤和錯誤嵌套標籤。使用 DOM 能夠在資料庫和 XML 檔案之間輕鬆移動資訊。

二.XML文檔的樹結構

三.XML DOM對象

    1.XML DOMDocument 對象

    程式碼片段1:

 BufferedReader in = new BufferedReader(new FileReader(“檔案名稱”));<br />DOMParser parser = new DOMParser();<br />parser.parse(new InputSource(in));<br />Document doc = parser.getDocument(); 

    2.XML DOMNodeList 對象

    3.XML DOMNode 對象

     程式碼片段2:

NodeList nl = doc.getElementsByTagName("*");<br />Node n;<br />n = nl.item(0);<br />System.out.print(n.getNodeName());

    4.XML DOMElement 對象

    程式碼片段3:

NodeList nl = doc.getElementsByTagName("*");<br />Element e = (Element)nl.item(0);<br />System.out.println(e.getTagName()+<br />e.getFirstChild().getNodeValue());<br />NamedNodeMap nnm = e.getAttributes();

    5.XML DOMAttribute 對象和XML DOMText 對象

    程式碼片段4:

Attr attr;<br />NamedNodeMap nnm;<br />attr = (Attr)nnm.item(0);<br />System.out.print(" 屬性是:"+attr.getName()+" ="+attr.getValue());<br />

四.樣本

    1.先建立一個XML文檔,存放在E盤根目錄下,內容如下:

student.xml

<?xml version="1.0" encoding="gb2312" ?><br /><roster><br /><student ID="s101"><br /><name>李華</name><br /><sex>男</sex><br /><birthday>1978.9.12</birthday><br /><score>92</score><br /><skill>Java</skill><br /><skill>Oracle</skill><br /><skill>C Sharp</skill><br /><skill>SQL Server</skill><br /></student><br /><student ID="s102"><br /><name>齊輝</name><br /><sex>女</sex><br /><birthday>1979.3.2</birthday><br /><score>90</score><br /><skill>Java</skill><br /><skill>Oracle</skill><br /></student><br /></roster><br />

    2.Java實現是依靠xerces實現的,xerces.jarhttp://u.115.com/file/f180f6d662。用Eclipse需要把它加入到項目中。

    Project->properties->java build path->libraries->add external jars->選擇檔案—>ok。

import java.io.*;<br />import org.w3c.dom.*;<br />import org.w3c.dom.Node;<br />import org.xml.sax.*;<br />import org.apache.xerces.parsers.*;</p><p>public class DOMSample<br />{<br /> static public void main(String[] argv)<br /> {<br /> try<br /> {<br /> //if (argv.length != 1)<br /> //{<br /> // System.err.println("Usage: java DOMSample filename");<br /> // System.exit(1);<br /> //}<br /> BufferedReader in = new BufferedReader(new FileReader("E:/student.xml"));<br /> DOMParser parser = new DOMParser();<br /> parser.parse(new InputSource(in));</p><p> Document doc = parser.getDocument();<br /> System.out.println("元素是: ");<br /> printElements(doc);<br /> System.out.println();<br /> System.out.println("每個元素的屬性是: ");<br /> printElementAttributes(doc);<br /> }<br /> catch (SAXException s)<br /> {<br /> System.out.println(s.toString());<br /> }<br /> catch (IOException e)<br /> {<br /> System.out.println(e.toString());<br /> }<br /> }</p><p> static void printElements(Document doc)<br /> {<br /> NodeList nl = doc.getElementsByTagName("*");<br /> Node n;<br /> for (int i=0;i<nl.getLength(); i++)<br /> {<br /> n = nl.item(i);<br /> System.out.print(n.getNodeName()+" ");<br /> }<br /> }</p><p> static void printElementAttributes(Document doc)<br /> {<br /> NodeList nl = doc.getElementsByTagName("*");<br /> Element e;<br /> Attr attr;<br /> NamedNodeMap nnm;<br /> String attrname;<br /> String attrval;<br /> int i,len;<br /> len = nl.getLength();<br /> for (int j=0;j < len;j++)<br /> {<br /> e = (Element)nl.item(j);<br /> System.out.println(e.getTagName()+":"+e.getFirstChild().getNodeValue());<br /> nnm = e.getAttributes();<br /> if (nnm != null)<br /> {<br /> for (i=0;i<nnm.getLength();i++)<br /> {<br /> attr = (Attr)nnm.item(i);<br /> attrname = attr.getName();<br /> attrval = attr.getValue();<br /> System.out.println(" 屬性是:"+attrname+" = "+attrval);<br /> }<br /> }<br /> }<br /> }<br />}<br />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.