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