javascript中的XML,javascriptXML
IE下建立DOM並載入XML
var xmldoc = new ActiveXObject("Microsoft.XMLDOM");xmldoc.load(url); //載入XML檔案xmldoc.loadXML(“<root><son/></root>”);//載入XML字串xmldoc.documentElement //擷取根項目,僅IE支援
非IE下建立DOM並載入XML
var xmldoc =document.implementation.createDocument("","",null);xmldoc.async =true; //非同步載入xmldoc.load(url);
第一個參數指定檔案的命名空間URL,第二個參數用於指定檔案元素的標籤名,第三個標籤用於指定文件類型對象,一般為null
例
var xmldoc =document.implementation.createDocument("http://www.x-do.org","root",null);
這行代碼建立了表示<rootxmlns="http://www.x-do.org"/>的XML DOM
W3C標準的XML DOM不支援loadXML()方法。要將XML字串解析為DOM,必須使用DOMParser對象,使用其parseFromString方法傳入XML字串表現形式:
var xmlParser = new DOMParser(); var xmlDom =xmlParser.parseFromString("<root />","text/xml"); //該方法返回一個XMLDOM對象 //第二個參數text/xml也可以是application/xml,兩者都用來解析XML //還可以是application/xhtml+xml,用來解析XHTML,只能用這三種MIME
與直接解析XML字串相對應的擷取XML字串的方法,IE中XML DOM對象具有唯讀xml屬性,而W3C標準則沒有相對應的屬性,但是提供了可以用於同樣的目的的XMLSerializer對象:
var serializer= new XMLSerializer(); var xmlStr =serializer.serializeToString(xmlDom,"text/xml"); //xmlDom為一個XML DOM節點對象 //而text/xml也可為application/xml
可以把一個函數綁定到XML文檔對象的onload事件(對於W3C相容的瀏覽器)或onreadystatechange事件(對於WindowsInternet Explorer)。然後,綁定的函數可以用來處理XML文檔的內容。
相容地建立XML的DOM對象
if (typeof document.implementation.createDocument != "undefined") { xmldoc =document.implementation.createDocument("", "", null); xmldoc.onload = displayData;} else if(window.ActiveXObject) { xmldoc = new ActiveXObject("Microsoft.XMLDOM"); xmldoc.onreadystatechange = function () { if (docObj.readyState == 4) displayData(); };}xmldoc.load(url);function displayData(){ }
load()方法只可以載入與包含JavaScript的頁面儲存於同一伺服器上的檔案,也就是說,不可以通過其他人的伺服器載入XML檔案
以同步模式載入檔案時,JavaScript代碼會等待檔案完全載入後才繼續執行代碼;而以非同步模式載入時,不會等待,可以使用事件處理函數來判斷檔案是否完全載入了。預設情況下,檔案按照非同步模式載入。要進行同步載入,只需設定async特性為false