比如我们有一个xml文件内容是:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sub>
<name>1111111</name>
<addr>22222222</addr>
<remark>333333</remark>
</sub>
<sub>
<name>21111111</name>
<addr>322222222</addr>
<remark>4333333</remark>
</sub>
</root>
1.如何用js来读取sub的总数和.
2.将这些sub存入一个二维数组(现在就是2*3大小的)中;
3.如何添加一个sub节点;
还有一个就是要在Firefox和ie下面能正确运行.
----------------------
<!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>
<title>js读取和添加xml代码</title>
<script type="text/javascript">
function Version()
{
if (window.ActiveXObject) {//ie
return "IE";
}
else if (document.implementation.createDocument) {//Mozilla, Firefox, Opera, etc.
return "FF";
}
return "";
}
// 兼容浏览器读取xml
function getxml(strxml)
{
var xmlDoc = null;
if (window.ActiveXObject) {//ie
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(strxml);
//如果从外部xml文件读取可使用xmlDoc.load(file);
}
else if (document.implementation.createDocument) {//Mozilla, Firefox, Opera, etc.
// xmlDoc = document.implementation.createDocument("", "", null);
xmlDoc = (new DOMParser()).parseFromString(strxml, "text/xml");
//如果从外部xml文件读取可使用xmlDoc.load(file);
}
return xmlDoc;
}
window.onload = function ()
{
var xml = document.getElementById("xml").innerHTML;
var xmlDOM = getxml(xml);
var count = 0;
var array = new Array();
if (Version() == "IE") {
count = xmlDOM.documentElement.childNodes.length;
alert("sub的总数:" + count );
for (var i = 0; i < count; i++) {
var node = xmlDOM.documentElement.childNodes.item(i);
var arr = new Array();
for (var c = 0; c < node.childNodes.length; c++) {
arr.push(node.childNodes.item(c).text);
// alert(node.childNodes.item(c).text);
}
array.push(arr);
}
show2Array(array);
//new node
var newNode = xmlDOM.documentElement.childNodes.item(0).cloneNode(1);
newNode.childNodes.item(0).text = "hello";
newNode.childNodes.item(1).text = "world";
newNode.childNodes.item(2).text = "nice!";
xmlDOM.documentElement.appendChild(newNode);
var arr = new Array();
arr.push(newNode.childNodes.item(0).text);
arr.push(newNode.childNodes.item(1).text);
arr.push(newNode.childNodes.item(2).text);
array.push(arr);
alert("添加新节点之后:");
show2Array(array);
count = xmlDOM.documentElement.childNodes.length;
alert("添加新节点之后sub的总数:" + count );
}
else {
count = xmlDOM.documentElement.children.length;
alert("sub的总数:" + count);
for (var i = 0; i < count; i++) {
var node = xmlDOM.documentElement.children.item(i);
var arr = new Array();
for (var c = 0; c < node.children.length; c++) {
arr.push(node.children.item(c).textContent);
}
array.push(arr);
}
show2Array(array);
//new node
var newNode = xmlDOM.documentElement.children.item(0).cloneNode(1);
newNode.children.item(0).textContent = "hello";
newNode.children.item(1).textContent = "world";
newNode.children.item(2).textContent = "nice!";
xmlDOM.documentElement.appendChild(newNode);
var arr = new Array();
arr.push(newNode.children.item(0).textContent);
arr.push(newNode.children.item(1).textContent);
arr.push(newNode.children.item(2).textContent);
array.push(arr);
alert("添加新节点之后:");
show2Array(array);
count = xmlDOM.documentElement.children.length;
alert("添加新节点之后sub的总数:" + count);
}
};
function show2Array(array)
{
for (var c = 0; c < array.length; c++) {
var arr = array[c];
var str = ""
for (var i = 0; i < arr.length; i++) {
str += arr[i] + "/r/n";
}
alert("第" + (c + 1) + "个元素:/r/n" + str);
}
}
</script>
</head>
<body>
<div id="xml" style="display:none;">
<?xml version="1.0" encoding="utf-8" ?>
<root>
<sub>
<name>1111111</name>
<addr>22222222</addr>
<remark>333333</remark>
</sub>
<sub>
<name>21111111</name>
<addr>322222222</addr>
<remark>4333333</remark>
</sub>
</root>
</div>
</body>
</html>