XML數據接口DOM入門介紹和常用對象

From: http://soft.zdnet.com.cn/software_zone/2007/1004/535320.shtml

1、簡介
  xmlDOM被設計爲可用於任何語言和任何操作系統。藉助DOM,程序員可以創建xml文檔、遍歷其結構,增、改、刪其元素。DOM將整個xml文檔視作一棵樹,文檔級的元素是樹的根

2.結構:

舉一實例

分析:

Document節點:即文檔對象,樹的最高節點,對整個文檔進行操作的入口

Element和Attribute節點:這些結點對象是對整個文檔進行操作的入口

Text節點類型,Text對象表達了元素或者屬性的文本內容,Text節點不再包含任何子節點

集合索引:對節點按指定方式進行遍歷,索引參數從0開始

3.Document對象

屬性:

async 屬性

 作   用

 async 屬性表示是否允許異步的下載。

 基本語法

 boolValue = xmlDocument.async;xmlDocument.async = boolValue;

說   明

 布爾值是可擦寫的(read/write),如果准許異步下載,值爲True;反之則爲False。

範   例

xmlDoc.async = "false";
alert(xmlDoc.async);

attribute 屬性

 作   用

 傳回目前節點的屬性列表。

 基本語法

 objAttributeList = xmlNode.attributes;

說   明

 傳回一個物件。如果此節點不能包含屬性,則傳回空值。

範   例

objAttList = xmlDoc.documentElement.attributes;
alert(objAttList);

childNodes 屬性

 作   用

 傳回一個節點清單,包含該節點所有可用的子節點。

 基本語法

 objNodeList=node.childNodes;

說   明

 傳回一個物件。假如這節點沒有子節點,傳回null。

範   例

objNodeList = xmlDoc.childNodes;
alert(objNodeList);

doctype 屬性

 作   用

 傳回文件型態節點,包含目前文件的DTD。這節點是一般的文件型態宣告,例如,節點,名爲EMAIL 的節點物件會被傳回。

 基本語法

 objDocType=xmlDocument.doctype;

說   明

 傳回一個對象,這個屬性是隻讀的。假如這文件不包含DTD,會傳回null。

範   例

objDocType = xmlDoc.doctype;
alert(objDocType.nodeName);

documentElement 屬性

 作   用

 確認xml 文件的根(Root)節點。

 基本語法

 objDoc=xmlDocument.documentElement;

說   明

 回一個在單一根文件元素中包含數據的對象。此屬性可讀/寫,如果文件中不包含根節點,將傳回null。

範   例

objDocRoot = xmlDoc.documentElement;
alert(objDocRoot);

firstChild 屬性

 作   用

 確認在目前節點中的第一個子元素。

 基本語法

 objFirstChild = xmlDocNode.firstChild ;

說   明

 此屬性只讀且會傳回一對象,如果節點中沒有包含第一個子元素,將傳回null。

範   例

objFirstChild = xmlDoc.documentElement.firstChild;
alert(objFirstChild);

implementation 屬性

 作   用

 DOM 應用程序能使用其它實作中的對象。implementation 屬性確認目前xml 文件的DOMimplementation 對象。

 基本語法

 objImplementation = xmlDocument.implementation;

說   明

 此屬性只讀且傳回一個對象。

範   例

objImp = xmlDoc.implementation;
alert(objImp

parseError 屬性

 作   用

 傳回一個DOM 解析錯誤對象,此對象描述最後解析錯誤的訊息。

 基本語法

 objParseErr = xmlDocument.parseError;

說   明

 此屬性是隻讀的。如果沒有錯誤發生,將傳回0。

範   例

objParseErr = xmlDoc.parseError;
alert(objParseErr);

previousSibling 屬性

 作   用

 傳回目前節點之前的兄弟節點。

 基本語法

 objPrevSibling = xmlDocument.previousSibling;

說   明

 傳回一個對象,這個屬性是隻讀的。若該節點沒有包含前面的兄弟節點,會傳回null。

範   例

objPrevSibling =
xmlDoc.documentElement.childNodes.item(3).previousSibling
alert(objPrevSibling);

readyState 屬性

 作   用

 傳回xml 文件資料的目前狀況。

 基本語法

 intState = xmlDocument.readyState;

說   明


 這個屬性是隻讀的,傳回值有以下的可能:

0-UNINITIALIZED:xml 對象被產生,但沒有任何文件被加載。
1-LOADING:加載程序進行中,但文件尚未開始解析。
2-LOADED:部分的文件已經加載且進行解析,但對象模型尚未生效。
3-INTERACTIVE:僅對已加載的部分文件有效,在此情況下,對象模型是有效但只讀的。
4-COMPLETED:文件已完全加載,代表加載成功。
 

範   例

alert("The readyState property is " + xmlDoc.readyState);

url 屬性

 作   用

 傳回最近一次加載xml 文件的URL。

 基本語法

 strDocUrl = xmlDocument.url;

說   明

 這個屬性是隻讀的,傳回最近一次加載成功文件的URL,若文件僅存在主存儲器中(表示該文件並非由外部檔案加載),則傳回null。

範   例

alert(xmlDoc.url);

validateOnParse 屬性

 作   用

 告訴解析器文件是否有效。

 基本語法

 boolValidate = xmlDocument.validateOnParse;
 xmlDocument.validateOnParse = boolValidate;

說   明

 此屬性是可擦寫的。如果傳回值爲true,表示文件被解析時被確認是有效的。如果傳回false,表示文件是無效的,並被認爲只是標準格式的(well-formed)文件。

範   例

xmlDoc.validateOnParse = true;
alert(xmlDoc.validateOnParse);

方法:

作   用

 abort 方法取消一個進行中的異步下載

 基本語法

 xmlDocument.abort();

說   明

 如果這個方法在異步下載時被呼叫,所有的解析動作會停止,而且在內存中的文件會被釋放。

範   例

xmlDocument

createAttribute 方法

 作   用

 建立一個指定名稱的屬性。

 基本語法

 xmlDocument.createAttribute(name);

說   明

 name 是被建立屬性的名稱。

範   例

objNewAtt = xmlDoc.createAttribute("encryption");
alert(objNewAtt.xml);

createCDATASection 方法

 作   用

 基本語法

 xmlDocument.createCDATASection(data);

說   明

 date 是一個字符串,且包含了被置放在CDATA 的資料。

範   例

objNewCDATA = xmlDoc.createCDATASection("This is a CDATA Section");
alert(objNewCDATA.xml);

createComment 方法

 作   用

 基本語法

 xmlDocument.createComment(data);

說   明

 data 是一個字符串,且包含了被置放在批註的資料。

範   例

objNewComment = xmlDoc.createComment("This is a comment");
alert(objNewComment.xml);

createDocumentFragment 方法

 作   用

 建立一個空的文件片斷對象。

 基本語法

 xmlDocument.createDocumentFragment();

說   明

 一個新的文件片斷被建立,但沒有加到文件樹中。要加入片斷到文件樹中,必須使用插入方法,例如insertBefore、replaceChild 或appendChild。

範   例

objNewFragment = xmlDoc.createDocumentFragment();
alert(objNewFragment.xml);

createElement 方法

 作   用

 建立一個指定名稱的元素。

 基本語法

 xmlDocument.createElement(tagName);

說   明

 tagName 是一個區分大小寫的字符串來指定新元素名稱。

範   例

objNewElement = xmlDoc.createElement("TO");
alert(objNewElement.xml);

createEntityReference 方法

 作   用

 建立一個參照到指定名稱的實體。

 基本語法

 xmlDocument.createEntityReference(name);

說   明

 name 是一個區分大小寫的字符串,來指定新實體參照的名稱。一個新的實體參照被建立,但是並沒有被加到文件樹中。若要將實體參照加到文件樹中,必須使用一種插入方法,例如:insertBefore,replaceChild,或appendChild。

範   例

objNewER = xmlDoc.createEntityReference("eRef");
alert(objNewER.xml);

createNode 方法

 作   用

 建立一個指定型態、名稱,及命名空間的新節點。

 基本語法

 xmlDocument.createNode(type, name, nameSpaceURI);

說   明

 type 用來確認要被建立的節點型態,name 是一個字符串來確認新節點的名稱,命名空間的前綴則是選擇性的。nameSpaceURI 是一個定義命名空間URI 的字符串。如果前綴被包含在名稱參數中,此節點會在nameSpaceURI 的內文中以指定的前綴建立。如果不包含前綴,指定的命名空間會被視爲預設的命名空間。

範   例

objNewNode = xmlDoc.createNode(1, "TO", "");
alert(objNewNode.xml);

createProcessingInstruction 方法

 作   用

 建立一個新的處理指令,包含了指定的目標和數據

 基本語法

 xmlDocument.createProcessingInstruction(target, data);

說   明

 target 是表示目標、名稱或處理指令的字符串。Data 是表示處理指令的值。一個新的處理指令被建立,但是並沒有加到文件樹中。要把處理指令加到文件樹中,必須使用插入方法,例如:insertBefore、replaceChild,或是appendChild。

範   例

objNewPI =xmlDoc.createProcessingInstruction(‘xml’, ‘version="1.0"’);
alert(objNewPI.xml);

createTextNode 方法

 作   用

 建立一個新的text 節點,幷包含指定的數據

 基本語法

 xmlDocument.createTextNode(data);

說   明

 data 是一個代表新text 節點的字符串。一個新的text 節點被建立,但是沒有加到文件樹中。若要將節點加到文件樹中,必須使用插入方法,例如:insertBefore,replaceChild或appendChild。

範   例

objNewTextNode = xmlDoc.createTextNode("This is a text node.");
alert(objNewTextNode.xml);

getElementsByTagName 方法

 作   用

 傳回指定名稱的元素集合。

 基本語法

 objNodeList = xmlDocument.getElementsByTagName(tagname);

說   明

 tagname 是一個字符串,代表找到的元素卷標名稱。使用tagname "*"傳回文件中所有找到的元素。

範   例

objNodeList = xmlDoc.getElementsByTagName("*");
alert(objNodeList.item(1).xml);

load 方法

 作   用

 表示從指定位置加載的文件。

 基本語法

 boolValue = xmlDocument.load(url);

說   明

 url 包含要被加載檔案的URL 的字符串。假如文件加載成功,傳回值即爲true。若加載失敗,傳回值爲false。

範   例

boolValue = xmlDoc.load("LstA_1.xml");
alert(boolValue);

loadxml 方法

 作   用

 加載一個xml 文件或字符串的片斷。

 基本語法

 boolValue = xmlDocument.loadxml(xmlString);

說   明

 xmlString 是包含xml 文字碼的字符串。

範   例

xmlString = "<GREETING><MESSAGE>Hello!</MESSAGE></GREETING>";
boolValue = xmlDoc.loadxml(xmlString);
alert(boolValue);

nodeFromID 方法

 作   用

 傳回節點ID 符合指定值的節點。

 基本語法

 xmlDocumentNode = xmlDocument.nodeFromID(idString);

說   明

 idString 是一個包含ID 值的字符串。符合的節點必定是ID 型態。若符合,將傳回一個對象;若操作失敗,則傳回null。

範   例

objDocumentNode = xmlDoc.nodeFromID("TO");
alert(objDocumentNode);

selectNodes 方法

 作   用

 傳回所有符合提供樣式(pattern)的節點。

 基本語法

 objDocumentNodeList = xmlDocumentNode.selectNodes(patternString);

說   明

 patternString 爲一包含XSL 樣式的字符串。此方法會傳回節點清單對象,包含符合樣式的節點。如果沒有符合的節點,則傳回空的清單列表。

範   例

objNodeList=xmlDoc.selectNodes("/");
alert(objNodeList.item(0).xml);

 4.Node對象

Node對象表示樹中的一個節點

屬性:

lastChild 屬性

 作   用

 確認目前節點中最後的子元素。

 基本語法

 objLastChild = xmlDocNode.lastChild;

說   明

 此屬性只讀且傳回一個對象。如果節點中沒有包含最後子元素,將傳回null。

範   例

objLastChild = xmlDoc.documentElement.lastChild;
alert(objLastChild);

nextSibling 屬性

 作   用

 在目前文件節點的子節點列表中傳回下一個兄弟節點。

 基本語法

 objNextSibling = xmlDocNode.nextSibling;

說   明

 此屬性是隻讀且傳回一個對象。如果節點中沒有包含其它的相關節點,會傳回null。

範   例

objSibling = xmlDoc.documentElement.childNodes.item(1) .nextSibling;
alert(objSibling);

nodeName 屬性

 作   用

 傳回代表目前節點名稱的字符串。

 基本語法

 strNodeName = xmlDocNode.nodeName ;

說   明

 傳回一個字符串。這個屬性是隻讀的,傳回元素名稱、屬性或實體參照。

範   例

strNodeName = xmlDoc.documentElement.nodeName;
alert(strNodeName);

nodeType 屬性

 作   用

 辨識節點的DOM 型態。

 基本語法

 numNodeType = xmlDocNode.nodeType ;

說   明


此屬性只讀且傳回一個數值。

有效的數值符合以下的型別:
1-ELEMENT
2-ATTRIBUTE
3-TEXT
4-CDATA
5-ENTITY REFERENCE
6-ENTITY
7-PI (processing instruction)
8-COMMENT
9-DOCUMENT
10-DOCUMENT TYPE
11-DOCUMENT FRAGMENT
12-NOTATION
 

範   例

numNodeType = xmlDoc.documentElement.nodeType;
alert(numNodeType);

nodeValue 屬性

 作   用

 傳回指定節點相關的文字。這並非一個元素中數據的值,而是與一個節點相關且未解析的文字,就像一個屬性或者一個處理指令。

 基本語法

 varNodeValue = xmlDocNode.nodeValue;

說   明

 傳回的文字代表以節點的nodeType 屬性爲主的型態值。(請參考附錄中的nodeType 屬性。)因爲節點型態可能是幾種數據型態中的一種,傳回值也因此有差異。傳回null 的節點型態有:DOCUMENT、ELEMENT、DOCUMENT TYPE、DOCUMENT FRAGMENT、ENTITY、ENTITY REFERENCE,和NOTATION。此屬性可擦寫。

範   例

varNodeValue = xmlDoc.documentElement.nodeValue;
alert(varNodeValue);

ondataavailable 屬性

 作   用

 指定一個事件來處理ondataavailable 事件。

 基本語法

 xmlDocNode.ondataavailable = value;

說   明

 此屬性是唯寫,允許文件作者一旦數據爲可用,即可儘快的使用數據來運作。

範   例

xmlDoc.ondataavailable = alert("Data is now available.");

onreadystatechange 屬性

 作   用

 指定一個事件來處理onreadystatechange 事件。這個事件能辨識readyState 屬性的改變。

 基本語法

 xmlDocNode.onreadystatechange = value;

說   明

 此屬性是唯寫的,允許文件作者指定當readyState 屬性改變時呼叫事件。

範   例

xmlDoc.onreadystatechange =
alert("The readyState property has changed.");

xml 屬性

 作   用

 傳回指定節點的xml 描述和所有的子節點。

 基本語法

 xmlValue = xmlDocumentNode.xml;

說   明

 此屬性是隻讀的。

範   例

xmlValue = xmlDoc.documentElement.xml;
alert(xmlValue);

方法:

AppendChild 方法

 作   用

 加上一個節點當作指定節點最後的子節點。

 基本語法

 xmlDocumentNode.appendChild(newChild);

說   明

 newChild 是附加子節點的地址。

範   例

docObj = xmlDoc.documentElement;
alert(docObj.xml);
objNewNode = docObj.appendChild(xmlDoc.documentElement. firstChild);
alert(docObj.xml);

cloneNode 方法

 作   用

 基本語法

 xmlDocumentNode.cloneNode(deep);

說   明

 deep 是一個布爾值。如果爲true,此節點會複製以指定節點發展出去的所有節點。如果是false,只有指定的節點和它的屬性被複制。

範   例

currNode = xmlDoc.documentElement.childNodes.item(1);
objClonedNode = currNode.cloneNode(1);
alert(objClonedNode.xml);

haschildnodes 方法

 作   用

 如果指定的節點有一個或更多子節點,傳回值爲true。

 基本語法

 boolValue = xmlDocumentNode.hasChildNodes() ;

說   明

 如果此節點有子節點傳回值爲true,否則傳回false 值。

範   例

boolValue = xmlDoc.documentElement.hasChildNodes();
alert(boolValue);

insertBefore 方法

 作   用

 在指定的節點前插入一個子節點。

 基本語法

 objDocumentNode = xmlDocumentNode.insertBefore(newChild,refChild);

說   明

 newChild 是一個包含新子節點地址的對象,refChild 是參照節點的地址。新子節點被插到參照節點之前。如果refChild 參數沒有包含在內,新的子節點會被插到子節點列表的末端。

範   例

objRefNode = xmlDoc.documentElement;
alert(xmlDoc.xml);
objNewNode = xmlDoc.createComment("This is a comment");
xmlDoc.insertBefore(objNewNode, objRefNode);
alert(xmlDoc.xml);

parsed 方法

 作   用

 會驗證該指定的節點(node)及其衍生的子節點(descendants)是否已被解析過。

 基本語法

 boolValue = xmlDocumentNode.parsed();

說   明

 如果全部的節點都已經被解析過了,則傳回值爲ture;如果有任何一個節點尚未被解析,傳回值則爲false。

範   例

currNode = xmlDoc.documentElement.childNodes.item(0);
boolValue = currNode.parsed();
alert(boolValue);

removeChild 方法

 作   用

 會將指定的節點從節點清單中移除。

 基本語法

 objDocumentNode = xmlDocumentNode.removeChild(oldChild);

說   明

 oldChild 爲一個包含要被移除的節點對象。

範   例

objRemoveNode = xmlDoc.documentElement.childNodes.item(3);
alert(xmlDoc.xml);
xmlDoc.documentElement.removeChild(objRemoveNode);
alert(xmlDoc.xml);

replaceChild 方法

 作   用

 置換指定的舊子節點爲提供的新子節點。

 基本語法

 objDocumentNode = xmlDocumentNode.replaceChild(newChild,oldChild);

說   明

 newChild 爲包含新子節點的對象。如果此參數爲null,則此舊子節點會被移除而不會被取代。oldChild 爲包含舊子節點的對象。

範   例

objOldNode = xmlDoc.documentElement.childNodes.item(3);
objNewNode = xmlDoc.createComment("I've replaced the BCC element.");
alert(xmlDoc.xml);
xmlDoc.documentElement.replaceChild(objNewNode,objOldNode);
alert(xmlDoc.xml);

selectSingleNode 傳回第一個符合樣式的節點。

 作   用

 傳回第一個符合樣式的節點。

 基本語法

 objDocumentNode = xmlDocumentNode.selectSingleNode(patternString);

說   明

 patternString 爲一包含XSL 樣式的字符串。此方法會傳回第一個符合的節點對象,如果沒有符合的節點,則傳回null。

範   例

objNode = xmlDoc.selectSingleNode("EMAIL/BCC");
alert(objNode.xml);

transformNode 方法

 作   用

 使用提供的樣式表來處理該節點及其子節點。

 基本語法

 strTransformedDocument = xmlDocumentNode.transformNode(stylesheet);

說   明

 stylesheet 爲一xml 文件或是片斷包含負責節點轉換工作的XSL 元素。此方法會傳回一包含轉換結果的字符串。

範   例

var style = new ActiveXObject("Microsoft.xmlDOM");
style.load("LstA_49.xsl");
strTransform = xmlDoc.transformNode(style.documentElement);
alert(strTransform);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章