1、XML DOM 是用於獲取、更改、新增或刪除 XML 元素的標準。
2、節點(XML 文件中的每個成分都是一個節點):
整個文件是一個文件節點;
每個XML元素是一個元素節點;
包含在XML元素中的文字是文字節點;
每一個XML屬性是一個屬性節點;
註釋是註釋節點;
3、載入XML文件
if (window.XMLHttpRequest) { // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行程式碼 xhttp=new XMLHttpRequest(); //建立XMHHTTP物件 } else { // IE6, IE5 瀏覽器執行程式碼 xhttp=new ActiveXObject("Microsoft.XMLHTTP");//建立XMHHTTP物件 } xhttp.open("GET","books.xml",false); //開啟XMLHTTP物件 xhttp.send(); //向伺服器傳送請求 xmlDoc=xhttp.responseXML; //設定響應為XML DOM物件
4、載入XML字串
if (window.DOMParser) { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } else { // Internet Explorer xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async=false; xmlDoc.loadXML(text); }
5、XML DOM Node物件
屬性
(xmlDoc文件節點,documentElement根節點)
nodeName 節點的名稱;元素的標籤名,屬性的是屬性名,文字的是#text,文件的是#documennt;
nodeValue 節點的值;元素是undefined,文字是本身,屬性是屬性值;
nodeType 節點型別;元素1,屬性2,文字3,註釋8,文件9;
parentNode 節點的父節點;
childNode 節點的子節點;
childNodes 節點的子節點列表;
lastChild 節點的最後一個子節點;
firstChild 節點的第一個子節點
neSibling 下一下同級節點
previousSibling 上一個同級節點
attributes 節點的屬性節點;
length 節點列表的長度,即節點數量
baseUri 節點的絕對基準URI
localName 節點名稱的本地部分;
namespaceURI 節點名稱空間URI;
ownerDocument 節點根元素;
prefix 設定或返回節點名稱空間字首;
textContent 返回節點及其子節點的文字內容;
物件方法
x.getElementsByTagName(name) 獲取帶有指定標籤名稱的所有元素;多個同級節點用[n]陣列位進行定位區分;
x.getAttributeNode(name) 獲取name的屬性;
x.setAttributeNode(node) 改變節點屬性;
x.setAttribute(attr,str) 改變或新建屬性;
xmlDoc.createAttribute(name) 建立屬性節點;後用setAttributeNode將節點新增到相應位置
x.appendChild(node) 向x插入子節點;
x.removeChild(node) 向x刪除子節點;刪除節點本身x.parentNode.removeChild(x);
x.replaceChild() 替換子節點;
xmlDoc.createElement(name) 建立元素節點,後需要用appendChild(node)來新增到節點樹中去;
xmlDoc.createTextNode(name) 建立文字節點;後需要用appendChild(node)來新增到節點樹中去;
xmlDoc.createCDATASection(name) 建立CDATA Section節點;
xmlDoc.createComment(str) 建立註釋節點,後需要用appendChild(node)來新增到節點樹中去;
x.insertData(offset,str) 向文字節點新增文字,offset為開始新增位置;
x.cloneNode(bool) 複製節點,引數用於指示被克隆的節點是否包括原節點的所有屬性和子節點;
x.compareDocumentPosition(node) 比較兩個節點的文件位置;
x.hasAttributes() 返回節點是否擁有某屬性;
x.hasChildNodes() 返回節點是否擁有子節點;
x.insertBefore() 在已有節點前插入節點;
x.isEqualNode() 比較兩個節點是否相等;
x.isSameNode() 檢查兩個節點是否是同一個節點;
x.lookupNamespaceURI() 返回匹配指定字首的名稱空間URI;
x.lookPrefix() 返回匹配指定名稱空間URI的字首;
x.getFeature(feature,version) 返回DOM物件,此物件可執行帶有指定特性和版本的專門的API;
x.getUserData(key) 返回與節點上鍵關聯的物件;
x.isSupported(feature,version) 返回指定特性是否在此節點上得到支援;
x.setUserData(key,data,handler) 把物件關聯到節點上的鍵;
x.normalize() 把節點下的所有文字節點放置到一個“標準”的格式中;
6、XML DOM Document物件
屬性
nodeName 節點名稱;
nodeType 節點型別;
nodeValue 節點值;
async 規定XML檔案的下載是否應當被非同步處理;
childNodes 返回文件的子節點的列表;
doctype 返回與文件相關的文件型別;
documentElement 返回文件根節點;
documentURI 設定或返回文件的位置;
domConfig 返回normalizeDocument() 被呼叫時所使用的配置;
firstChild 返回文件的第一個子節點;
lastChild 返回文件的最後一個子節點;
implementation 返回處理該文件的DOMImplementation物件;
inputEncoding 返回文件的編碼方式;
strictErrorChecking設定或返回是否強制進行錯誤檢查;
xmlEncoding 返回文件的XML編碼;
xmlVersion 設定或返回文件的XML版本;
xmlStandalone 設定或返回文件是否為standalone;
方法
adoptNode(sourceenode) 從另一個文件向本文件選定一個節點,然後返回被選節點;
createAttribute(name) 建立帶有指定名稱的屬性節點;
createAttributeNS(uri,name) 建立帶有指定名稱和名稱空間的屬性節點;
createCDATASection() 建立CDATA區段節點;
createComment() 建立註釋節點;
createDocumentFragment() 建立空的DocumentFragment物件,並返回此物件;
createElement() 建立元素節點;
createElementNS() 建立帶有指定名稱空間的元素節點;
createEntityReference(name) 建立EntityReference物件,並返回此物件;
createProcessingInstruction() 建立ProcessingInstruction物件,並返回此物件;
createTextNode() 建立文字節點;後需要用appendChild;
getElementById(id) 返回指定Id屬性的元素,如果不存在則返回null;
getElementByTagName() 返回帶有指定名稱的所有元素的NodeList;
getElementByTagNameNS() 返回帶有指定名稱和名稱空間的所有元素的NodeList;
importNode(nodetoimport,deep) 從另一個文件向本文件選定一個節點。該方法建立源節點的一個副本。如果deep為true,則將匯入指定節點的所有子節點,否則只匯入節點本身;
normalizeDocument() 把節點下的所有文字節點放置到一個“標準”的格式中;
renameNode() 重新命名元素或屬性節點;
7、XML DOM Element物件
因為Element也是一種節點,所以它可以繼承Node物件的屬性和方法;以下是除Node所具有外的屬性和方法。
屬性
tagName 返回元素的名稱;
schemaTypeInfo 返回與元素相關聯的型別資訊;
方法
getAttributeNS() 返回帶名稱空間的屬性值;
getAttributeNodeNS() 以attribute物件返回帶名稱空間的屬性節點;
getElementByTagNameNS() 返回匹配的帶有名稱空間的節點及子節點的NodeList;
setAttributeNS() 新增新的帶名稱空間的屬性;
setAttributeNodeNS() 新增新的帶名稱空間屬性節點;
hasAttributeNS() 返回元素是否擁有匹配指定名稱和名稱空間的屬性;
removeAttribute() 刪除指定屬性;
removeAttributeNS() 刪除指定帶有名稱空間的屬性;
removeAttributeNode() 刪除指定的屬性節點;
8、XML DOM Attr物件
屬性
name 屬性的名稱;
localName 屬性的名稱本地部分;
namespaceURI 屬性名稱空間URI;
nodeName 節點名稱;
nodeType 節點型別;
nodeValue 節點值;
baseURI 返回屬性的絕對基準URI;
isId 返回屬性是否是Id型別的bool值;
ownerDocument 返回屬性所屬的根元素;
ownerElement 返回屬性所附屬元素的節點;
prefix 名稱空間字首;
schemaTypeInfo 與屬性相關聯的型別資訊;
specified 如果屬性值被設定在文件中,返回true,否則false;
textContent 屬性的文字內容;
value 屬性的值;
9、XML DOM Text 物件
屬性
data 元素或屬性的文字;
length 元素或屬性的文字長度;
wholeText 以文件的順序向此節點返回相鄰文字節點的所有文字;
isElementContentWhitespace 判斷文字節點是否包含空白字元;
方法
appendData() 向節點追加資料;
deleteData() 從節點刪除資料;
insertData() 向節點插入資料;
replaceData() 替換節點資料;
replaceWholeText() 用指定文字來替換此節點及所有相鄰的文字節點;
splitText() 在指定偏移處將此節點拆分為兩個節點,同時返回包含偏移處之後的文字的新節點;
substringData() 從節點提取資料;
10、XML DOM CDATASection物件
屬性
data 節點文字;
length 長度;
方法
appendData() 向節點追加資料;
deleteData() 從節點刪除資料;
insertData() 向節點插入資料;
replaceData() 替換節點資料;
splitText() 在指定偏移處將此節點拆分為兩個節點,同時返回包含偏移處之後的文字的新節點;
substringData() 從節點提取資料;
11、XML DOM Comment物件
屬性
data 節點文字;
length 長度;
方法
appendData() 向節點追加資料;
deleteData() 從節點刪除資料;
insertData() 向節點插入資料;
replaceData() 替換節點資料;
splitText() 在指定偏移處將此節點拆分為兩個節點,同時返回包含偏移處之後的文字的新節點;
substringData() 從節點提取資料;
12、XMLHttpRequest物件
屬性
responseXML 作為XML資料響應資料;
responseText 返回作為一個字串的響應資料;
status 返回狀態數;
statusText 返回狀態文字;
onreadystatechange 儲存函式,在每次readyState屬性變化時被呼叫;
readyState 存放了XMLHttpRequest的狀態,0請求未初始化,1伺服器建立連線,2收到的請求,3處理請求,4請求完成和響應準備就緒;
方法
send(string) 傳送請求到伺服器,sttring僅用於POST請求;
abort() 取消當前請求;
open(method,url,async,uname,pswd) 規定請求型別;
getResponseHeader() 返回指定的頭資訊;
getAllResponseHeaders() 返回頭資訊;
setRequestHeader() 把值新增到要傳送的標頭檔案;