XML DOM(Document Object Model)

覆手為雲p發表於2018-05-08

 

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() 把值新增到要傳送的標頭檔案;

 

相關文章