JavaScript中的XMLDOM對象


測試:

demo.xml中的內容:

js文件內容:

window.onload=function(){

    //var v=returnXMLDOM();
    //v.loadXML('<root><user>Lee</user></root>');//第一種 加載xml字符
    //alert(v.xml);//序列化  打印出xml字符串

    //第二種加載方式:加載外部xml文件
    var v=returnXMLDOM();//得到創建的對象
    v.load('demo.xml');//同一個目錄下這樣寫  不然還需要加上文件的路徑
    alert(v.xml);//進行序列話 打印字符串

    //操作這些xmldom節點 和之前的dom操作方法一樣
    var node= v.getElementsByTagName("B")[0];
    //alert(node.nodeName);//B元素節點  所以nodename屬性的值為B
    //alert(node.nodeValue);//元素節點的nodevalue屬性值為null
    //alert(node.nodeType);//nodetype值為1

    //現在需要通過B節點得到c節點
    var cnode=node.childNodes[0];//得到第一個c節點 也是一個元素節點
    alert(cnode.nodeName);//c元素節點  所以nodename屬性的值為c
    alert(cnode.nodeValue);//元素節點的nodevalue屬性值為null
    alert(cnode.nodeType);//nodetype值為1
    alert(cnode.firstChild.nodeValue);//打印第一個c節點中的文本的值

}
function returnXMLDOM(){
    var version=[
        'MSXML2.DOMDocument.6.0',
        'MSXML2.DOMDocument.3.0',
        'MSXML2.DOMDocument'

    ];
    for(var i=0;i<version.length;i++){
        try {
            var xmlDom = new ActiveXObject(version[i]);//如果沒有異常 那么就創建xmldom對象成功  並且返回
            return xmlDom;
        } catch (e) {
            //跳過
        }
    }
    throw new Error("你的瀏覽器不支持XMLDOM對象");
}

運行結果:

 

------------------

 使用domxml創建節點 並把添加

    var xmldom=returnXMLDOM();//得到創建的xmldom對象
    xmldom.load('demo.xml');//把xml文件加載進來
    var rootA=xmldom.documentElement;//通過documentElement方法獲取xmldom中的跟標簽A
    alert(rootA.tagName);//打印節點名稱A
    //下面完成節點的添加操作 為B節點添加一個兄弟節點E
    var E=xmldom.createElement("E");//注意這里不是document對象創建的e節點  而是xmldom對象
    E.appendChild(xmldom.createTextNode("這是E節點的子節點"));
    //把E節點加入到根節點A中  成為B節點的兄弟節點
    rootA.appendChild(E);
    alert(xmldom.xml);

---------------------

加載方式,同步和異步:

js代碼:

 1 var xmldom=getXMLDOM();
 2 xmldom.load('demo.xml');//加載的時候有兩種模式:同步和異步 默認同步 true
 3 alert(xmldom.xml);
 4 //上面的代碼什么都不會打印  主要是采用了異步加載的模式  load還沒有加載完畢就去序列化打印字符串  當然沒有數據
 5 //下面使用同步方式  即load加載完畢之前是不會執行下面的代碼的
 6 xmldom.async=false;  7 alert(xmldom.xml);//此時可以正常打印出xml文件中的數據
 8 
 9 
10 function getXMLDOM(){
11     var version=[
12         'MSXML2.DOMDocument.6.0',
13         'MSXML2.DOMDocument.3.0',
14         'MSXML2.DOMDocument'
15     ];
16     for(var i=0;i<version.length;i++){
17         try{
18             var xmldom=new ActiveXObject(version[i]);
19             return xmldom;
20         }catch (e){
21             //跳過
22         }
23     }
24     throw new Error("你的瀏覽器不支持XMLDOM對象");
25 }

xml代碼:

1 <A>
2     <B>
3         <c>你好1</c>
4         <c>你好2</c>
5     </B>
6 </A>

運行效果:

同步可能會造成瀏覽器出現假死狀態

------------

異步方式:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM