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>

回答者: qsc800528 - 经理 四级 1-30 17:26

///////////////////////////////////////////////////////////

首先:xml文件(tree.xml)内容如下:

<?xml version="1.0" encoding="gb2312"?>

<treeview>

<tree >

<text>富镇</text>

<target>_blank</target>

<title>乡镇</title>

<link>http://www.baidu.com/</link>

</node>

</tree>

<tree >

<text>石家庄</text>

<target>_blank</target>

<title>城市</title>

<link></link>

</tree>

</tree>

<tree ;

function getSubject()

{

var xmlDoc;

if(window.ActiveXObject)

{

//获得操作的xml文件的对象

xmlDoc = new ActiveXObject('Microsoft.XMLDOM');

xmlDoc.async = false;

xmlDoc.load("tree.xml");

if(xmlDoc == null)

{

alert('您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!');

window.location.href='/Index.aspx';

return;

}

}

//解析xml文件,判断是否出错

if(xmlDoc.parseError.errorCode != 0)

{

alert(xmlDoc.parseError.reason);

return;

}

//获得根接点

var nodes = xmlDoc.documentElement.childNodes;

//得到根接点下共有子接点个数,并循环

for(var i=0; i<nodes.length; i++)

{

//如果接点名为 tree

if(nodes(i).nodeName == "tree")

{

readTree(nodes(i));

}

//如果接点名为 node

else if(nodes(i).nodeName == "node")

{

readNode(nodes(i));

}

}

//删除对象

delete(xmlDoc);

//显示HTML

window.show.innerHTML = HTML;

return;

}

//读Tree节点

function readTree(cI)

{

var nodes = cI.childNodes;

var menuHTML = space;

menuHTML += blank;

//得到超级链接

menuHTML += "<a href='";

//如果该节点的连接属性不为空,则连接

if(cI.selectNodes("link")(0).text != "")

{

menuHTML += cI.selectNodes("link")(0).text;

}

//否则为空链接

else

{

menuHTML += "#";

}

//目标

if(cI.selectNodes("target")(0).text != "")

{

menuHTML += " target='"+cI.selectNodes("target")(0).text;

menuHTML += "'";

}

//点击菜单事件,调用divshow(vid)函数

menuHTML += " onclick=javascript:divshow('"+cI.getAttribute("id")+"');";

//得到节点标题

menuHTML += " title='";

menuHTML += cI.selectNodes("title")(0).text;

//结束

menuHTML += "'>";

//得到节点的正文

menuHTML += cI.selectNodes("text")(0).text;

menuHTML += "</a><br>\n";

//将menuHTML设置添加到HTML字符串

HTML += menuHTML;

//得到该节点的属性值<span

HTML += "<div +cI.getAttribute("id")+"' >\n";

for(var i=0; i<nodes.length; i++)

{

var tempImg = "";

tempImg += blank;

if(nodes(i).nodeName == "tree")

{

space += tempImg;

readTree(nodes(i));

space = "";

}

else if(nodes(i).nodeName == "node")

{

space += tempImg;

readNode(nodes(i));

}

}

HTML += "</div>\n";

return;

}

//读Node节点

function readNode(cI)

{

var nodeHTML = space;

nodeHTML += blank;

//设置超级链接

nodeHTML += "<a href='";

//得到连接地址

nodeHTML += cI.selectNodes("link")(0).text;

//目标

if(cI.selectNodes("target")(0).text != "")

nodeHTML += "' target='"+cI.selectNodes("target")(0).text;

//得到节点标题

nodeHTML += "' title='";

nodeHTML += cI.selectNodes("title")(0).text;

//结束

nodeHTML += "'>";

//得到节点的正文

nodeHTML += cI.selectNodes("text")(0).text;

nodeHTML += "</a><br>\n";

HTML += nodeHTML;

//HTML += "<div +cI.getAttribute("id")+"'>";

space = "";

return;

}

//操作对象的显示还是隐藏效果

function divshow(vid)

{

if(document.all[vid].style.display == "none")

{

document.all[vid].style.display = "block";

}

else

{

document.all[vid].style.display = "none";

}

return;

}

</script>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<title>JS_XML</title>

<style type="text/css">

<!--

body

{

margin-left: 0px;

margin-top: 0px;

margin-right: 0px;

margin-bottom: 0px;

font-size: 9pt;

}

A

{

text-decoration:none;

font-family: "宋体";

font-size: 9pt;

COLOR:#000000;

}

-->

</style>

</head>

<body bgcolor="#EEEEEE" leftmargin="0" topmargin="0">

<div id=show></div>

</body>

<script>

getSubject()

</script>

</html>

//////////////////////////////////////////////////////////

运行,要在同一个路径下!

生成xml文件,并读取的数据的代码:

因为下面代码的xmlDoc.save总是提示没有权限,所以只好改用fso写入文件。

<HTML>

<HEAD>

<TITLE>javascript打印-打印页面设置-打印预览-保存代码</TITLE>

<META http-equiv=Content-Type content="text/html; charset=gb2312" />

<SCRIPT language=javascript>

function printsetup() {

// 打印页面设置

wb.execwb(8,1);

}

function printpreview() {

// 打印页面预览

wb.execwb(7,1);

}

function printit() {

if (confirm('确定打印吗?')) {

wb.execwb(6,6)

}

}

function $(str)

{

return document.getElementById(str);

}

function RWFile(){

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

if(!xmlDoc.load("C:\\test.xml")){

xmlDoc.appendChild(xmlDoc.createElement("root"));

//xmlDoc.insertBefore(xmlDoc.createProcessingInstruction("xml","version='1.0'"),xmlDoc.firstChild);

}

var xname=xmlDoc.createElement("name");

xname.text=$("name").innerHTML;

var xprice=xmlDoc.createElement("price");

xprice.text=$("price").innerHTML;

var xpair=xmlDoc.createElement("pair");

xpair.appendChild(xname);

xpair.appendChild(xprice);

xmlDoc.getElementsByTagName("root")[0].appendChild(xpair);

var fso=new ActiveXObject("Scripting.FileSystemObject");

rFile=fso.CreateTextFile("C:\\test.xml",1,true);

rFile.WriteLine('<?xml version="1.0"?>');

rFile.WriteLine(xmlDoc.documentElement.xml);

rFile.close();

//xmlDoc.save("C:\\u.xml");

}

function RDFile(){

xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

if(!xmlDoc.load("C:\\test.xml")){

$("result").innerHTML="没有记录!";

return;

}

var xpair=xmlDoc.getElementsByTagName("pair");

if(xpair.length==0){

$("result").innerHTML="没有记录!";

return;

}

$("result").innerHTML=""

for(var i=0;i<xpair.length;i++)$("result").innerHTML+="姓名:"+xpair[i].firstChild.text+" 金额:"+xpair[i].lastChild.text+"<br />";

}

</SCRIPT>

</HEAD>

<BODY>

<DIV>

<OBJECT id=wb height=0 width=0

classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 name=wb></OBJECT>

<INPUT onclick=javascript:printit() type=button value=打印

name=button_print />

<INPUT onclick=javascript:printsetup(); type=button value=打印页面设置

name=button_setup />

<INPUT onclick=javascript:printpreview(); type=button value=打印预览

name=button_show />

<button onclick='document.execCommand("saveAs")'>另存为...</button>

</DIV><br><br>

<form ></div>

</BODY>

</HTML>