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);

posted @ 2011-10-16 10:13  高捍得  阅读(220)  评论(0编辑  收藏  举报