文中尽量用上所有的操作和属性,以做示范
<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>
<!--
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>
评论
//你在code collection 可以看到很多XML操作 回复
<?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文件一样用,包括查找,修改,添加节点并显示出来,但是找不修改后保存再放回数据库的方法 回复
<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才可以。
谢谢。 回复
这样是可以load进来的,用这种方法可以,不知道是否还有其他的方法
谢谢。 回复
求解 回复
//修改节点,利用XPATH定位节点
var b = doc.selectSingleNode("//ttyp/sex");
b.text = "女"; 回复
翻译:我是楼主的儿子
如下:我是楼主的儿子
回复
为什么告诉我语法不对? 回复
确认了一下,告诉我的是写入失败。。。。。 回复
{
var doc = new ActiveXObject("Msxml2.DOMDocument");
doc.load("tmp.xml");
var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");
doc.appendChild(p);
var root = doc.createElement("students");
doc.appendChild(root);
alert(doc.xml);
doc.save("tmp.xml");
}
不晓得为什么老是不让我写入。。。搂住帮忙啊 回复
但是我也无法在服务器上保存这个xml文件,我尝试给出路经,但是还是无法做到,也没有错误的提示。
不知道楼主或者哪位朋友知道如何解决。非常期待。
谢谢
回复
1,这是客户端编程(javascript),不是服务器端编程,所以不能利用xml.save()直接保存到服务器当中。
2, 应该先在客户端,将数据处理好。再通过Ajax 或者 是表单提交 或者是传递参数的方法传到服务端。
3,最后由 服务端的程序(asp , jsp , php , perl....)来处理保存到数据库可以服务器当中。 回复
tmp.xml在哪个路径下
请各位高手帮忙 回复
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
没有作用,会抱错的 请教,谢谢 回复
最好指定绝对路径 回复
var list = doc.selectNodes("/中国/省[@名称='福建']/城市")
for(var i=0;i<list.length;i++) {
alert(list[i].text);
} 回复
<html>
<head>
<title></title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body>
<script language=javascript>
<!--
var doc = new ActiveXObject("MSXML2.DOMDocument");
function writeXML()
{
// var doc = new ActiveXObject("Msxml2.DOMDocument");
// doc.load("tmp.xml");
var doc = new ActiveXObject("MSXML2.DOMDocument");
var p = doc.createProcessingInstruction("xml","version='1.0' encoding='gb2312'");
doc.appendChild(p);
var root = doc.createNode(1,"中国","");
doc.appendChild(root);
var elem=doc.createNode(1,"省","");
root.appendChild(elem);
var att=doc.createAttribute("名称");
att.value="福建";
elem.setAttributeNode(att);
var ele1=doc.createNode(1,"城市","");
ele1.text="厦门";
elem.appendChild(ele1);
var ele2=doc.createNode(1,"城市","");
ele2.text="石狮";
elem.appendChild(ele2);
var ele3=doc.createNode(1,"城市","");
ele3.text="晋江";
elem.appendChild(ele3);
var elem=doc.createNode(1,"省","");
root.appendChild(elem);
var att=doc.createAttribute("名称");
att.value="江苏";
elem.setAttributeNode(att);
var elem=doc.createNode(1,"省","");
root.appendChild(elem);
var att=doc.createAttribute("名称");
att.value="安徽";
elem.setAttributeNode(att);
doc.save("china.xml");
}
function readXML(){
var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.load ("china.xml")
var list = doc.selectNodes("/中国/省[@名称='福建']/城市")
for(var i=0;i<list.length;i++) {
alert(list[i].text);
}
}
//-->
</script>
<br><br><br><br><br><br>
<center>
<input type=button value="写入XML" onclick="writeXML()" id=button1 name=button1>
<input type=button value="读取XML" onclick="readXML()" id=button2 name=button2>
<center>
</body>
</html>