xml文件操作
跨浏览器解析xml文件
xml文件 为 a.xml:
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Tree id="0">数目0</Tree>
<Tree id="1">数目1</Tree>
<Tree id="2">数目2</Tree>
</Root>
代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="xmljx.aspx.cs" Inherits="xmljx" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">var xmlDoc;
//ie
if (window.ActiveXObject) {
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.load("a.xml");
getmessage();
}
//ff
else if (document.implementation && document.implementation.createDocument) {xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc.load("a.xml");
xmlDoc.onload = getmessage;}
else {
alert('Your browser conot handle this script');
}function getmessage() {
document.write(xmlDoc.getElementsByTagName("Tree")[0].childNodes[0].nodeValue);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
--------------------------------------------------------------------------------------------------------------------------
加载XML的函数:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="xmljzhs.aspx.cs" Inherits="xmljzhs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function loadXMLDoc(dname) {
try //Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
catch (e) {
try //ff, Mozilla, Opera, etc.
{
xmlDoc = document.implementation.createDocument("", "", null);
}
catch (e) { alert(e.message) }
}
try {
xmlDoc.async = false;
xmlDoc.load(dname);
return (xmlDoc);
}
catch (e) { alert(e.message) }
return (null);
}function display(dname) {
document.write(loadXMLDoc(dname).getElementsByTagName("Tree")[0].childNodes[0].nodeValue);
}document.write()
</script>
</head>
<body onload='display("a.xml")'>
<form id="form1" runat="server">
<div></div>
</form>
</body>
</html>
节点信息:
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
- nodeName(节点名称)
- nodeValue(节点值)
- nodeType(节点类型)
-
节点类型:
最重要的节点类型是:
元素类型 节点类型
元素 1
属性 2
文本 3
注释 8
文档 9
循环取得节点:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="xmljzhs.aspx.cs" Inherits="xmljzhs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript">
function loadXMLDoc(dname,nodename) {
try //Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
catch (e) {
try //ff, Mozilla, Opera, etc.
{
xmlDoc = document.implementation.createDocument("", "", null);
}
catch (e) { alert(e.message) }
}
try {
xmlDoc.async = false;
xmlDoc.load(dname);var x = xmlDoc.getElementsByTagName(nodename);
for (var i = 0; i < x.length; i++) {document.writeln(x[i].childNodes[0].nodeValue);
document.write("<br/>");
}
}
catch (e) { alert(e.message) }
return (null);
}
</script>
</head>
<body onload='loadXMLDoc("a.xml","Tree")'>
<form id="form1" runat="server">
<div></div>
</form>
</body>
</html>
设置一个新的属性以及属性值:
下面为了方便把loadXMLDoc()函数写进一个JS文件,保存起来。为了方便使用;
保存为loadXMLDoc.js;文件内容为:
function loadXMLDoc(dname, nodename) {
try //Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
}
catch (e) {
try //ff, Mozilla, Opera, etc.
{
xmlDoc = document.implementation.createDocument("", "", null);
}
catch (e) { alert(e.message) }
}
try {
xmlDoc.async = false;
xmlDoc.load(dname);return xmlDoc;
}
catch (e) { alert(e.message) }
return (null);
}
代码为:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="xmljzhs.aspx.cs" Inherits="xmljzhs" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="JScript.js" type="text/javascript"></script>
<script type="text/javascript">
window.onload = function () {var xmldom = loadXMLDoc("a.xml");
var x = xmldom.getElementsByTagName("Tree");//新增属性值
for (var i = 0; i < x.length; i++) {
x.item(i).setAttribute("tag", "tag" + i);
}
//修改属性值
// for (i = 0; i < x.length; i++) {
// x.item(i).setAttribute("category", "bestseller");
// }
}
</script>
</head>
<body >
<form id="form1" runat="server">
<div></div>
</form>
</body>
</html>
创建一个元素加入到节点,并设置文本节点和节点属性:
xmlDoc = loadXMLDoc("a.xml");
var x = xmlDoc.getElementsByTagName('Tree');
var newel, newtext;for (i = 0; i < x.length; i++) {
newel = xmlDoc.createElement('edition');//创建节点
newtext = xmlDoc.createTextNode("node" + i);//设置文本节点
newel.appendChild(newtext);
newel.setAttribute("id", i);//设置节点属性
x[i].appendChild(newel);
}
向某个文本节点插入数据:
xmlDoc = loadXMLDoc("a.xml");
var x = xmlDoc.getElementsByTagName("Tree")[0].childNodes[0];
x.insertData(0, "newdata");
克隆节点:
var oldNode = xmlDoc.getElementsByTagName('Tree')[0];
var newNode = oldNode.cloneNode(true);
xmlDoc.documentElement.appendChild(newNode);