js读取和添加xml代码

[ 973 查看 / 0 回复 ]

比如我们有一个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下面能正确运行.

谢谢各位大虾..请将html源代码贴出来..

----------------------
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4.     <title>js读取和添加xml代码</title>
  5.     <script type="text/javascript">
  6.         function Version()
  7.         {
  8.             if (window.ActiveXObject) {//ie
  9.                 return "IE";
  10.             }
  11.             else if (document.implementation.createDocument) {//Mozilla, Firefox, Opera, etc.
  12.                 return "FF";
  13.             }
  14.             return "";
  15.         }
  16.         // 兼容浏览器读取xml
  17.         function getxml(strxml)
  18.         {
  19.             var xmlDoc = null;
  20.             if (window.ActiveXObject) {//ie
  21.                 xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  22.                 xmlDoc.async = false;
  23.                 xmlDoc.loadXML(strxml);
  24.                 //如果从外部xml文件读取可使用xmlDoc.load(file);
  25.             }
  26.             else if (document.implementation.createDocument) {//Mozilla, Firefox, Opera, etc.
  27.             //  xmlDoc = document.implementation.createDocument("", "", null);
  28.                 xmlDoc = (new DOMParser()).parseFromString(strxml, "text/xml");
  29.                 //如果从外部xml文件读取可使用xmlDoc.load(file);
  30.             }
  31.        
  32.             return xmlDoc;
  33.         }
  34.         window.onload = function ()
  35.         {
  36.             var xml = document.getElementById("xml").innerHTML;
  37.             var xmlDOM = getxml(xml);
  38.             var count = 0;
  39.             var array = new Array();

  40.             if (Version() == "IE") {
  41.                 count = xmlDOM.documentElement.childNodes.length;
  42.                 alert("sub的总数:" + count );

  43.                 for (var i = 0; i < count; i++) {
  44.                     var node = xmlDOM.documentElement.childNodes.item(i);
  45.                     var arr = new Array();
  46.                     for (var c = 0; c < node.childNodes.length; c++) {
  47.                         arr.push(node.childNodes.item(c).text);
  48.                         // alert(node.childNodes.item(c).text);
  49.                     }
  50.                     array.push(arr);
  51.                 }
  52.                 show2Array(array);


  53.                 //new node
  54.                 var newNode = xmlDOM.documentElement.childNodes.item(0).cloneNode(1);
  55.                 newNode.childNodes.item(0).text = "hello";
  56.                 newNode.childNodes.item(1).text = "world";
  57.                 newNode.childNodes.item(2).text = "nice!";

  58.                 xmlDOM.documentElement.appendChild(newNode);

  59.                 var arr = new Array();
  60.                 arr.push(newNode.childNodes.item(0).text);
  61.                 arr.push(newNode.childNodes.item(1).text);
  62.                 arr.push(newNode.childNodes.item(2).text);
  63.                 array.push(arr);

  64.                 alert("添加新节点之后:");
  65.                 show2Array(array);
  66.                 count = xmlDOM.documentElement.childNodes.length;
  67.                 alert("添加新节点之后sub的总数:" + count  );
  68.             }
  69.             else {


  70.                 count = xmlDOM.documentElement.children.length;
  71.                 alert("sub的总数:" + count);

  72.                 for (var i = 0; i < count; i++) {
  73.                     var node = xmlDOM.documentElement.children.item(i);
  74.                     var arr = new Array();
  75.                     for (var c = 0; c < node.children.length; c++) {
  76.                         arr.push(node.children.item(c).textContent);
  77.                     }
  78.                     array.push(arr);
  79.                 }
  80.                 show2Array(array);


  81.                 //new node
  82.                 var newNode = xmlDOM.documentElement.children.item(0).cloneNode(1);
  83.                 newNode.children.item(0).textContent = "hello";
  84.                 newNode.children.item(1).textContent = "world";
  85.                 newNode.children.item(2).textContent = "nice!";

  86.                 xmlDOM.documentElement.appendChild(newNode);

  87.                 var arr = new Array();
  88.                 arr.push(newNode.children.item(0).textContent);
  89.                 arr.push(newNode.children.item(1).textContent);
  90.                 arr.push(newNode.children.item(2).textContent);
  91.                 array.push(arr);

  92.                 alert("添加新节点之后:");
  93.                 show2Array(array);
  94.                 count = xmlDOM.documentElement.children.length;
  95.                 alert("添加新节点之后sub的总数:" + count);
  96.             }




  97.         };

  98.         function show2Array(array)
  99.         {

  100.             for (var c = 0; c < array.length; c++) {

  101.                 var arr = array[c];

  102.                 var str = ""
  103.                 for (var i = 0; i < arr.length; i++) {
  104.                     str += arr[i] + "\r\n";
  105.                 }
  106.                 alert("第" + (c + 1) + "个元素:\r\n" + str);
  107.             }
  108.         }
  109.     </script>
  110. </head>
  111. <body>
  112.     <div id="xml" style="display:none;">
  113.         <?xml version="1.0" encoding="utf-8" ?>
  114.         <root>
  115.     <sub>
  116.         <name>1111111</name>
  117.         <addr>22222222</addr>
  118.         <remark>333333</remark>
  119.     </sub>
  120.     <sub>
  121.         <name>21111111</name>
  122.         <addr>322222222</addr>
  123.         <remark>4333333</remark>
  124.     </sub>
  125. </root>
  126.     </div>
  127. </body>
  128. </html>
复制代码
TOP