js读取和添加xml代码

比如我们有一个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>
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值