天天看點

DOMDocument 的屬性及一些javascript操作方法

最近發現DOMDocument對象很重要,還有XMLHTTP也很重要

注意大小寫一定不能弄錯.

屬性:

 1Attributes     存儲節點的屬性清單(隻讀)

 2childNodes     存儲節點的子節點清單(隻讀)

 3dataType     傳回此節點的資料類型

 4Definition     以DTD或XML模式給出的節點的定義(隻讀)

 5Doctype     指定文檔類型節點(隻讀)

 6documentElement     傳回文檔的根元素(可讀寫)

 7firstChild     傳回目前節點的第一個子節點(隻讀)

 8Implementation     傳回XMLDOMImplementation對象

 9lastChild     傳回目前節點最後一個子節點(隻讀)

10nextSibling     傳回目前節點的下一個兄弟節點(隻讀)

11nodeName     傳回節點的名字(隻讀)

12nodeType     傳回節點的類型(隻讀)

13nodeTypedValue     存儲節點值(可讀寫)

14nodeValue     傳回節點的文本(可讀寫)

15ownerDocument     傳回包含此節點的根文檔(隻讀)

16parentNode     傳回父節點(隻讀)

17Parsed     傳回此節點及其子節點是否已經被解析(隻讀)

18Prefix     傳回名稱空間字首(隻讀)

19preserveWhiteSpace     指定是否保留白白(可讀寫)

20previousSibling     傳回此節點的前一個兄弟節點(隻讀)

21Text     傳回此節點及其後代的文本内容(可讀寫)

22url     傳回最近載入的XML文檔的URL(隻讀)

23Xml     傳回節點及其後代的XML表示(隻讀)

方法:

 1appendChild     為目前節點添加一個新的子節點,放在最後的子節點後

 2cloneNode     傳回目前節點的拷貝

 3createAttribute     建立新的屬性

 4createCDATASection     建立包括給定資料的CDATA段

 5createComment     建立一個注釋節點

 6createDocumentFragment     建立DocumentFragment對象

 7createElement     建立一個元素節點

 8createEntityReference     建立EntityReference對象

 9createNode     建立給定類型,名字和命名空間的節點

10createPorcessingInstruction     建立操作指令節點

11createTextNode     建立包括給定資料的文本節點

12getElementsByTagName     傳回指定名字的元素集合

13hasChildNodes     傳回目前節點是否有子節點

14insertBefore     在指定節點前插入子節點

15Load     導入指定位置的XML文檔

16loadXML     導入指定字元串的XML文檔

17removeChild     從子結點清單中删除指定的子節點

18replaceChild     從子節點清單中替換指定的子節點

19Save     把XML檔案存到指定節點

20selectNodes     對節點進行指定的比對,并傳回比對節點清單

21selectSingleNode     對節點進行指定的比對,并傳回第一個比對節點

22transformNode     使用指定的樣式表對節點及其後代進行轉換

23transformNodeToObject     使用指定的樣式表将節點及其後代轉換為對象

*************************************************************************************************************************

DOM(文檔對象模型)概念的推出,這個API使HTML如虎添翼,但是有些學DHTML的朋友還是有些困撓,隻是因為目前的手冊的書寫不太科學,是按字母

來分的,不便查閱.其實DOM中最關鍵是要掌握節點與節點之間的關系(between node andnode),想學習DHTML中的DOM千萬不要從頭到尾地看遍所

有的屬性和方法,你有三國時張松的"過目不忘"的本領嗎?沒有吧,那就聽我分析一下:

其實DOM教給我們的就是一個層次結構,你可以了解為一個樹形結構,就像我們的目錄一樣,一個根目錄,根目錄下有子目錄,子目錄下還有子

目錄……

根節點:

DOM把層次中的每一個對象都稱之為節點(NODE),以HTML超文本标記語言為例:整個文檔的一個根就是<html>,在DOM中可以使用

document.documentElement來通路它,它就是整個節點樹的根節點(ROOT)

子節點:

一般意義上的節點,根節點以下最大子節點就是主文檔區<body>了,要通路到body标簽,在腳本中應該寫:

document.body

body區以内所有的文本及HTML标簽都是文檔的節點,分别稱為文本節點、元素節點(或者叫标簽節點),大家知道HTML說到底隻是文本而矣,

不論怎麼樣的網頁必然由這兩個節點組成,也隻能由這兩個節點組成

節點之間的關系:

節點之間的關系也是DOM中最重要的一個關節,如何正确地引用到節點對象,一定要清楚節點樹各個節點的互相描述方式,在DHTML裡,

Javascript腳本就用了各個節點對象的一整套方法和屬性去描述另外的節點對象。

節點的絕對引用:

傳回文檔的根節點

document.documentElement

傳回目前文檔中被擊活的标簽節點

document.activeElement

傳回滑鼠移出的源節點

event.fromElement

傳回滑鼠移入的源節點

event.toElement

傳回激活事件的源節點

event.srcElement

節點的相對引用:(設目前對節點為node)

傳回父節點

node.parentNode

node.parentElement

傳回子節點集合(包含文本節點及标簽節點)

node.childNodes

傳回子标簽節點集合

node.children

傳回子文本節點集合

node.textNodes

傳回第一個子節點

node.firstChild

傳回最後一個子節點

node.lastChild

傳回同屬下一個節點

node.nextSibling

傳回同屬上一個節點

node.previousSibling

節點的各種操作:(設目前的節點為node)

新增标簽節點句柄:

document.createElement(sNode) //參數為要新添的節點标簽名,例:newnode=document.createElement("div");

1、添加節點:

追加子節點:

node.appendChild(oNode) //oNode為生新增的節點句柄,例:node.appendChild(newnode)

應用标簽節點

node.applyElment(oNode,sWhere)//oNode為生新增的節點句柄,sWhere有兩個值:outside / inside,加在目前節點外面還是裡面

插入節點

inode.insertBefore()

node.insertAdjacentElement()

node.replaceAdjacentText()

2、修改節點:

删除節點

node.remove()

node.removeChild()

node.removeNode()

替換節點

node.replaceChild()

node.replaceNode()

node.swapNode()

2、複制節點:

傳回複制複制節點引用

node.cloneNode(bAll)//bAll為布爾值,true / false 是否克隆該節點所有子節點

3、節點資訊

是否包含某節點

node.contains()

是否有子節點

node.hasChildNodes()

************************************************************************************************************************

<script language="JavaScript">

<!--

var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")

//加載文檔

//doc.load("b.xml");

//建立檔案頭

var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");

    //添加檔案頭

    doc.appendChild(p);

//用于直接加載時獲得根接點

//var root = doc.documentElement;

//兩種方式建立根接點

//    var root = doc.createElement("students");

    var root = doc.createNode(1,"students","");

    //建立子接點

    var n = doc.createNode(1,"ttyp","");

        //指定子接點文本

        //n.text = " this is a test";

    //建立孫接點

    var o = doc.createElement("sex");

        o.text = "男";    //指定其文本

    //建立屬性

    var r = doc.createAttribute("id");

        r.value="test";

        //添加屬性

        n.setAttributeNode(r);

    //建立第二個屬性    

    var r1 = doc.createAttribute("class");

        r1.value="tt";

        n.setAttributeNode(r1);

        //删除第二個屬性

        n.removeAttribute("class");

        //添加孫接點

        n.appendChild(o);

        //添加文本接點

        n.appendChild(doc.createTextNode("this is a text node."));

        //添加注釋

        n.appendChild(doc.createComment("this is a comment\n"));

        //添加子接點

        root.appendChild(n);

    //複制接點

    var m = n.cloneNode(true);

        root.appendChild(m);

        //删除接點

        root.removeChild(root.childNodes(0));

    //建立資料段

    var c = doc.createCDATASection("this is a cdata");

        c.text = "hi,cdata";

        //添加資料段

        root.appendChild(c);

    //添加根接點

    doc.appendChild(root);

    //查找接點

    var a = doc.getElementsByTagName("ttyp");

    //var a = doc.selectNodes("//ttyp");

    //顯示改接點的屬性

    for(var i= 0;i<a.length;i++)

      {

          alert(a[i].xml);

          for(var j=0;j<a[i].attributes.length;j++)

          {

              alert(a[i].attributes[j].name);

          }

      }

    //修改節點,利用XPATH定位節點

    var b = doc.selectSingleNode("//ttyp/sex");

    b.text = "女";

    //alert(doc.xml);

    //XML儲存(需要在服務端,用戶端用FSO)

    //doc.save();

    //檢視根接點XML

    if(n)

          alert(n.ownerDocument.xml);

//-->

</script> 

本文轉自快樂就好部落格園部落格,原文連結:http://www.cnblogs.com/happyday56/archive/2007/12/10/989023.html,如需轉載請自行聯系原作者

繼續閱讀