DOM對象 – JAVA編程語言程序開發技術文章

DOM的基本對象有5個:Document,Node,NodeList,Element和Attr。下圖表示瞭基本對象間的關系

 

Document對象代表瞭整個XML的文檔,所有其它的Node,都以一定的順序包含在Document對象之內,排列成一個樹形的結構,程序員可以通過遍歷這顆樹來得到XML文檔的所有的內容,這也是對XML文檔操作的起點。我們總是先通過解析XML源文件而得到一個Document對象,然後再來執行後續的操作。此外,Document還包含瞭創建其它節點的方法,比如createAttribute()用來創建一個Attr對象。它所包含的主要的方法有: createAttribute(String):用給定的屬性名創建一個Attr對象,並可在其後使用setAttributeNode方法來放置在某一個Element對象上面。createElement(String):用給定的標簽名創建一個Element對象,代表XML文檔中的一個標簽,然後就可以在這個Element對象上添加屬性或進行其它的操作。

createTextNode(String):用給定的字符串創建一個Text對象,Text對象代表瞭標簽或者屬性中所包含的純文本字符串。如果在一個標簽內沒有其它的標簽,那麼標簽內的文本所代表的Text對象是這個Element對象的唯一子對象。

getElementsByTagName(String):返回一個NodeList對象,它包含瞭所有給定標簽名字的標簽。

getDocumentElement():返回一個代表這個DOM樹的根節點的Element對象,也就是代表XML文檔根元素的那個對象。

Node對象是DOM結構中最為基本的對象,代表瞭文檔樹中的一個抽象的節點。在實際使用的時候,很少會真正的用到Node這個對象,而是用到諸如Element、Attr、Text等Node對象的子對象來操作文檔。Node對象為這些對象提供瞭一個抽象的、公共的根。雖然在Node對象中定義瞭對其子節點進行存取的方法,但是有一些Node子對象,比如Text對象,它並不存在子節點。Node對象所包含的主要的方法有:

appendChild(org.w3c.dom.Node):為這個節點添加一個子節點,並放在所有子節點的最後,如果這個子節點已經存在,則先把它刪掉再添加進去。

getFirstChild():如果節點存在子節點,則返回第一個子節點,對等的,還有getLastChild()方法返回最後一個子節點。

getNextSibling():返回在DOM樹中這個節點的下一個兄弟節點,對等的,還有getPreviousSibling()方法返回其前一個兄弟節點。

getNodeName():根據節點的類型返回節點的名稱。

getNodeType():返回節點的類型。

getNodeValue():返回節點的值。

hasChildNodes():判斷是不是存在有子節點。

hasAttributes():判斷這個節點是否存在有屬性。

getOwnerDocument():返回節點所處的Document對象。

insertBefore(org.w3c.dom.Node new,org.w3c.dom.Node ref):在給定的一個子對象前再插入一個子對象。

removeChild(org.w3c.dom.Node):刪除給定的子節點對象。

replaceChild(org.w3c.dom.Node new,org.w3c.dom.Nodeold):用一個新的Node對象代替給定的子節點對象。

NodeList對象,代表瞭一個包含一個或者多個Node的列表。可以簡單的把它看成一個Node的數組,我們可以通過方法來獲得列表中的元素:

getLength():返回列表的長度。www.aiwalls.com

item(int):返回指定位置的Node對象。

Element對象代表的是XML文檔中的標簽元素,繼承於Node,亦是Node的最主要的子對象。在標簽中可以包含有屬性,因而Element對象中有存取其屬性的方法,而任何Node中定義的方法,也可以用在Element對象上面。

getElementsByTagName(String):返回一個NodeList對象,它包含瞭在這個標簽中其下的子孫節點中具有給定標簽名字的標簽。

getTagName():返回一個代表這個標簽名字的字符串。getAttribute(String):返回標簽中給定屬性名稱的屬性的值。在這兒需要主要的是,應為XML文檔中允許有實體屬性出現,而這個方法對這些實體屬性並不適用。這時候需要用到getAttributeNodes()方法來得到一個Attr對象來進行進一步的操作。

getAttributeNode(String):返回一個代表給定屬性名稱的Attr對象。Attr對象代表瞭某個標簽中的屬性。Attr繼承於Node,但是因為Attr實際上是包含在Element中的,它並不能被看作是Element的子對象,因而在DOM中Attr並不是DOM樹的一部分,所以Node中的getparentNode(),getpreviousSibling()和getnextSibling()返回的都將是null。也就是說,Attr其實是被看作包含它的Element對象的一部分,它並不作為DOM樹中單獨的一個節點出現。這一點在使用的時候要同其它的Node子對象相區別。

請看下面例子:(message.xml)

[java]
<?xml version="1.0" standalone="yes"?> 
<links> 
    <link> 
        <text>sohu</text> 
        <url newWindow="no">https://www.sohu.com</url>  
        <author>zhangzhaoyang</author> 
        <date> 
            <day>2</day> 
            <month>1</month> 
            <year>2004</year> 
        </date> 
        <description>zhangzhaoyang's website</description> 
    </link> 
    <link> 
        <text>Java</text> 
        <url newWindow="no">https://java.sun.com</url>  
        <author>Sun Microsystems</author> 
        <date> 
            <day>3</day> 
            <month>1</month> 
            <year>2001</year> 
        </date> 
        <description>Sun Microsystem's website.</description> 
    </link> 
    <link> 
        <text>microsoft</text> 
        <url newWindow="no">https://www.microsoft.com</url>  
        <author>bill gates</author> 
        <date> 
            <day>4</day> 
            <month>1</month> 
            <year>2000</year> 
        </date> 
        <description>bill's website</description> 
    </link> 
</links> 
 

摘自  Java教程
 

發佈留言