DOM樹的學習

2021-06-16 19:01:14 字數 2575 閱讀 1525

1.dom的基本物件

dom的基本物件有5個,document, node, nodelist,element 和attr。

document物件代表了整個xml的文件,是對xml文件進行操作的起點。所有其他的node,都以一定的順序寶還在documen物件之中,排成乙個樹形的結構。程式設計師可以遍歷這棵樹來得到xml文件的所有內容。首先總是通過解析xml原始檔而得到乙個document物件,然後再來執行後續的操作。主要的方法有以下幾個:

(1)createattribute(string ):用給定的屬性名建立乙個attr物件,並可在其後使用setattributenode方法來放置乙個element物件上面。

(2)createelement(string):用給定的標籤名建立乙個element物件,代表xml文件中的乙個標籤,然後就可以在這個element物件上新增屬性或進行其他的操作。

(3)createtextnode(string):用給定的字串建立乙個text物件,text物件代表了標籤或者屬性中所包含的純文字字串。如果在乙個標籤內沒有其他的標籤,那麼標籤內的文字所代表的text物件就是這個element物件的唯一子物件。

(4)getelementelement(string):返回乙個nodelist物件,它包含了所給定標籤名字的標籤。

(5)getdocumentelement():返回乙個代表這個dom樹的根節點的element物件,也就是代表xml文件根元素的那個物件。

node物件是dom結構中最為基本的物件,代表了文件樹中的乙個抽象節點。在實際使用中,很少會用到node這個物件,而是用到諸如element,attr,text等node的子物件來操作穩當。node物件為這些物件提供了乙個抽象的,公共的根。雖然在node物件中定義了對其子節點進行訪問的方法,但是有一些node子物件,比如text物件,它並不存在子節點。node物件所包含的主要方法有:

(2)getfirstchild():如果節點存在子節點,則返回第乙個子節點,對等的,還有getlastchild()方法返回最後乙個子節點。

(3)getnextsibling():返回在dom樹中這個節點的下乙個兄弟節點,對等的,還有getprevioussibling()方法返回其前乙個兄弟節點。

(4)getnodename():根據節點的型別返回節點的名稱。

(5)getnodetype():返回節點的型別。

(6)getnodevalue():返回節點的值。

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

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

(9)getownerdocument():返回節點所處的document物件。

(10)insertbefore(org.w3c.dom.node new,org.w3c.dom.node ref):在給定的乙個子物件前再插入乙個子物件。

(11)removechild(org.w3c.dom.node):刪除給定的子節點物件。

(12)replacechild(org.w3c.dom.node new,org.w3c.dom.node old):用乙個新的node物件代替給定的子節點物件。

nodelist物件,顧名思義,就是代表了乙個包含了乙個或者多個node的列表。可以簡單的把它看成乙個node的陣列,我們可以通過方法來獲得列表中的元素:

(1)getlength():返回列表的長度。

(2)item(int):返回指定位置的node物件。

element物件代表的是xml文件中的標籤元素,繼承於node,亦是node的最主要的子物件。在標籤中可以包含有屬性,因而element物件中有訪問其屬性的方法,而任何node中定義的方法,也可以用在element物件上面。

(1)getelementsbytagname_r(string):返回乙個nodelist物件,它包含了在這個標籤中其下的子孫節點中具有給定標籤名字的標籤。

(2)gettagname():返回乙個代表這個標籤名字的字串。

(3)getattribute(string):返回標籤中給定屬性名稱的屬性的值。在這兒需要主要的是,應為xml文件中允許有實體屬性出現,而這個方法對這些實體屬性並不適用。這時候需要用到getattributenodes()方法來得到乙個attr物件來進行進一步的操作。

(4)getattributenode(string):返回乙個代表給定屬性名稱的attr物件。 

attr物件代表了某個標籤中的屬性。attr繼承於node,但是因為attr實際上是包含在element中的,它並不能被看作是element的子物件,因而在dom中attr並不是dom樹的一部分,所以node中的getparentnode(),getprevioussibling()和getnextsibling()返回的都將是null。也就是說,attr其實是被看作包含它的element物件的一部分,它並不作為dom樹中單獨的乙個節點出現。這一點在使用的時候要同其它的node子物件相區別。

需要說明的是,上面所說的dom物件在dom中都是用介面定義的,在定義的時候使用的是與具體語言無關的idl語言來定義的。因而,dom其實可以在任何物件導向的語言中實現,只要它實現了dom所定義的介面和功能就可以了。同時,有些方法在dom中並沒有定義,是用idl的屬性來表達的,當被對映到具體的語言時,這些屬性被對映為相應的方法。 

JavaScript學習筆記(五)之DOM樹

十一 dom或以樹型展示的web頁面 定義dom的基礎設施,包括模式 schema 和應用程式設計介面 api dom的核心是語言無關的api,可以用任何語言實現,dom的核心就是提供修改 刪除或建立web頁面內容所需的各種功能。主要的兩個api即html和core。它們都能實現相同的功能,但htm...

DOM初探(9) DOM結構樹

document一回車,他就代表整個文件 document一回車,他代表的是乙個函式,什麼函式需要首字母大寫?建構函式吧,只不過這個document有點特殊,你不能new他,這時系統留給自己new的。那這個建構函式對咱們有什麼幫助呢?建構函式上面會有乙個原型,能夠給生產數來的建構函式使用,如果doc...

遍歷DOM文件樹

一 介紹 遍歷文件樹通過使用parentnode屬性 firstchild屬性 lastchild屬性 previoussibling屬性和nextsibling屬性來實現。1 parentnode屬性 該屬性返回當前節點的父節點。pnode obj.parentnode pnode 該引數用來儲存...