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 = "女";