用javascript操作xml

來源:互聯網
上載者:User
javascript|xml

<script language="JavaScript">
<!--
var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM")


//載入文檔
//doc.load("b.xml");

//建立檔案頭
var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");

    //添加檔案頭
    doc.appendChild(p);

//用於直接載入時獲得根接點
//var root = doc.documentElement;

//兩種方式建立根接點
//    var root = doc.createElement("students");
    var root = doc.createNode(1,"students","");

    //建立子接點
    var n = doc.createNode(1,"ttyp","");

        //指定子接點文本
        //n.text = " this is a test";
   
    //建立孫接點
    var o = doc.createElement("sex");
        o.text = "男";    //指定其文本

    //建立屬性
    var r = doc.createAttribute("id");
        r.value="test";

        //添加屬性
        n.setAttributeNode(r);

    //建立第二個屬性   
    var r1 = doc.createAttribute("class");
        r1.value="tt";
       
        //添加屬性
        n.setAttributeNode(r1);

        //刪除第二個屬性
        n.removeAttribute("class");

        //添加孫接點
        n.appendChild(o);

        //添加文本接點
        n.appendChild(doc.createTextNode("this is a text node."));

        //添加註釋
        n.appendChild(doc.createComment("this is a comment\n"));
   
        //添加子接點
        root.appendChild(n);
   
    //複製接點
    var m = n.cloneNode(true);

        root.appendChild(m);
       
        //刪除接點
        root.removeChild(root.childNodes(0));

    //建立資料區段
    var c = doc.createCDATASection("this is a cdata");
        c.text = "hi,cdata";
        //添加資料區段
        root.appendChild(c);
   
    //添加根接點
    doc.appendChild(root);

    //尋找接點
    var a = doc.getElementsByTagName("ttyp");
    //var a = doc.selectNodes("//ttyp");

    //顯示改接點的屬性
    for(var i= 0;i<a.length;i++)
    {
        alert(a[i].xml);
        for(var j=0;j<a[i].attributes.length;j++)
        {
            alert(a[i].attributes[j].name);
        }
    }

    //修改節點,利用XPATH定位節點
    var b = doc.selectSingleNode("//ttyp/sex");
    b.text = "女";

    //alert(doc.xml);

    //XML儲存(需要在服務端,用戶端用FSO)
    //doc.save();
   
    //查看根接點XML
    if(n)
    {
        alert(n.ownerDocument.xml);
    }

//-->
</script>
posted on 2004-11-30 15:55 ttyp 閱讀(2178) 評論(13)  編輯 收藏 收藏至365Key 所屬分類: 指令碼
 

評論
# re: 用javascript操作xml 2005-04-08 14:01 feig
感謝樓主,以前我做c/s的,對javascript的東西瞭解太少。
  


# re: 用javascript操作xml 2005-07-05 12:16 Koy
我以前也是做c/s的,現在也要學javascript了
  


# 求助 2005-08-29 11:30 hawk
我是用js載入xml的片斷(從資料庫讀出的一段符合xml規則的字串)讀取節點,添加均沒有問題,可最後卻不知道如何將修改後的xml片斷儲存再放入資料庫!求助!!
  


# re: 用javascript操作xml 2005-08-29 12:40 ttyp
doc.save(yourpath);

//你在code collection 可以看到很多XML操作
  


# re: 用javascript操作xml 2005-08-29 13:19 hawk
我儲存的是xml的片斷,不是xml的檔案,是要把儲存後的xml片斷作為字串再放入資料庫,code collection 沒有關於xml片斷儲存的操作阿!
  


# re: 用javascript操作xml 2005-08-29 13:26 ttyp
片段是什嗎?一個接點下的所有內容麼,node.xml就是其內容啊
  


# re: 用javascript操作xml 2005-08-29 17:25 hawk
就是
<?xml version="1.0" encoding="gb2312"?><xml><group id="我的好友"><friend>1001</friend><friend>1002</friend><friend>1003</friend></group><group id="我的同事"><friend>1005</friend></group></xml>

這是放在資料庫裡得一個欄位,用loadXML()的方法後可以和載入xml檔案一樣用,包括尋找,修改,添加節點並顯示出來,但是找不修改後儲存再放回資料庫的方法
  


# re: 用javascript操作xml 2005-08-29 19:05 ttyp
你要通過js直接儲存在資料庫裡?那是不行得了,dom沒有操作資料庫得功能,只能儲存為檔案,你用doc.xml取得內容後,再用你怎麼讀得怎麼寫回去吧
  


# re: 用javascript操作xml 2005-09-17 01:55 xiao3
請教樓主大人,我在使用asp頁面中調用 如下的代碼時:(javascript中)
<script language=javascript>
var objXML = new ActiveXObject("MSXML2.DOMDocument");
objXML.async = false;
objXML.load("data1.xml");
alert("d:"+objXML.xml);
</script>
如果 裝載的 data1.xml檔案的第一句是:<?xml version="1.0" encoding="utf-8" ?>
alert出來就是空的。
而如果把第一句修改成<?xml version="1.0" encoding="gb2312" ?>
alert出來的內容是data1.xml的內容。
請教一下,如何在保持<?xml version="1.0" encoding="utf-8" ?> 的情況下,在javascript中能正確裝載 xml檔案? 現在是要把編碼修改成 gb2312才可以。
謝謝。
  


# re: 用javascript操作xml 2005-09-17 08:06 ttyp
XML檔案的編碼格式修改為UTF-8試試(用記事本開啟,另存新檔,下面有選編碼的格式)
  


# re: 用javascript操作xml 2005-09-18 02:07 xiao3
謝謝樓主!
這樣是可以load進來的,用這種方法可以,不知道是否還有其他的方法

謝謝。
  


# re: 用javascript操作xml 2005-10-19 20:26 gphy
樓主似乎沒給出修改節點的方法

求解
  


# re: 用javascript操作xml 2005-10-19 22:55 ttyp
加了修改的部分
//修改節點,利用XPATH定位節點
var b = doc.selectSingleNode("//ttyp/sex");
b.text = "女";



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.