javascript操作Xml增删改查(IE上)

javascript操作Xml增删改查(IE下)

01.<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
02.<html xmlns="http://www.w3.org/1999/xhtml" > 
03.<head> 
04.    <title>js操作Xml增删改查(IE下)</title> 
05.    <mce:script type="text/javascript"><!--  
06.    /*等解决的问题:  
07.      1.xpath到底是定位到哪一层,怎样定位到比如root这一级还是person或name这一级.  
08.    */  
09.    var xmlDoc;  
10.    var rootNode; //根结点  
11.    //装载Xml文档  
12.    function loadXml(){  
13.        try{  
14.            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");  
15.            xmlDoc.async=false;//关闭异步加载  
16.            xmlDoc.load("XmlFile.xml");//load是从文件,loadXML是从字符串.  
17.            rootNode = xmlDoc.documentElement;  
18.        }catch(e) {alert(e.message)}  
19.    }  
20.    //显示内存中的Xml文档  
21.    function outXml(){  
22.        var divXml=document.getElementById("divXml");  
23.        divXml.innerHTML=xmlDoc.xml;//显示xml内容,技巧是加个xml后缀.?  
24.        alert(xmlDoc.xml);  
25.    }  
26.    //增  
27.    function addXml(){  
28.        //叶子结点,设置text值  
29.        var newName = xmlDoc.createElement("name");   
30.        newName.text = "crane";  
31.        var newGender = xmlDoc.createElement("gender");   
32.        newGender.text = "female";  
33.        //父级结点,用appendChild(childNode);  
34.        var newPerson = xmlDoc.createElement("person");   
35.        //设置属性id  
36.        newPerson.setAttribute("id","2");  
37.        newPerson.appendChild(newName);  
38.        newPerson.appendChild(newGender);  
39.        //增加到根结点  
40.        rootNode.appendChild(newPerson);  
41.        alert(xmlDoc.xml);  
42.    }  
43.    //删  
44.    function deleteXml(){  
45.        //先找到结点  
46.        var singleNode = xmlDoc.selectSingleNode("/root/person[name='tree']");  
47.        //找到父级再删除  
48.        singleNode.parentNode.removeChild(singleNode);   
49.        alert(xmlDoc.xml);  
50.    }  
51.    //改  
52.    function updateXml(){  
53.        var singleNode = xmlDoc.selectSingleNode("/root/person[name='crane']");  
54.        singleNode.childNodes[0].text = "updated";  
55.        alert(xmlDoc.xml);  
56.    }  
57.    //查  
58.    function queryXml(){  
59.        //alert(rootNode.nodeName);//节点名  
60.        //alert(rootNode.text);//节点里的全部内容  
61.        //xPath选择节点数组  
62.        //var nodes = xmlDoc.selectNodes("/root/person");  
63.        //alert(nodes[0].text);  
64.        //选择单个节点  
65.        /*总结  
66.          1."/root/person[name='tree']"等同于"/root[person/name='tree']"即找出来的是person结点  
67.        */  
68.        var singleNode = xmlDoc.selectSingleNode("/root/person[gender='female']");//这里的值需要加引号  
69.        alert(singleNode.text);  
70.        alert(singleNode.getAttribute("id"));  
71.        //测试xpath定位  
72.        var sglNode = xmlDoc.selectSingleNode("/root[person/gender='male']");//这里定位不明确.再研究.  
73.        alert(sglNode.text);  
74.        //显示全部xml文档  
75.        //alert(xmlDoc.xml);  
76.    }  
77.      
78.// --></mce:script> 
79.</head> 
80.<body> 
81.<div id="divXml"></div> 
82.<input type="button" value="load" onclick="loadXml();" /> 
83.<input type="button" value="show" onclick="outXml();" /> 
84.<input type="button" value="add" onclick="addXml();" /> 
85.<input type="button" value="delete" onclick="deleteXml();" /> 
86.<input type="button" value="update" onclick="updateXml();" /> 
87.<input type="button" value="query" onclick="queryXml();" /> 
88.</body> 
89.</html> 
<!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增删改查(IE下)</title>
    <mce:script type="text/javascript"><!--
    /*等解决的问题:
      1.xpath到底是定位到哪一层,怎样定位到比如root这一级还是person或name这一级.
    */
    var xmlDoc;
    var rootNode; //根结点
    //装载Xml文档
    function loadXml(){
        try{
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async=false;//关闭异步加载
            xmlDoc.load("XmlFile.xml");//load是从文件,loadXML是从字符串.
            rootNode = xmlDoc.documentElement;
        }catch(e) {alert(e.message)}
    }
    //显示内存中的Xml文档
    function outXml(){
        var divXml=document.getElementById("divXml");
        divXml.innerHTML=xmlDoc.xml;//显示xml内容,技巧是加个xml后缀.?
        alert(xmlDoc.xml);
    }
    //增
    function addXml(){
        //叶子结点,设置text值
        var newName = xmlDoc.createElement("name");
        newName.text = "crane";
        var newGender = xmlDoc.createElement("gender");
        newGender.text = "female";
        //父级结点,用appendChild(childNode);
        var newPerson = xmlDoc.createElement("person");
        //设置属性id
        newPerson.setAttribute("id","2");
        newPerson.appendChild(newName);
        newPerson.appendChild(newGender);
        //增加到根结点
        rootNode.appendChild(newPerson);
        alert(xmlDoc.xml);
    }
    //删
    function deleteXml(){
        //先找到结点
        var singleNode = xmlDoc.selectSingleNode("/root/person[name='tree']");
        //找到父级再删除
        singleNode.parentNode.removeChild(singleNode);
        alert(xmlDoc.xml);
    }
    //改
    function updateXml(){
        var singleNode = xmlDoc.selectSingleNode("/root/person[name='crane']");
        singleNode.childNodes[0].text = "updated";
        alert(xmlDoc.xml);
    }
    //查
    function queryXml(){
        //alert(rootNode.nodeName);//节点名
        //alert(rootNode.text);//节点里的全部内容
        //xPath选择节点数组
        //var nodes = xmlDoc.selectNodes("/root/person");
        //alert(nodes[0].text);
        //选择单个节点
        /*总结
          1."/root/person[name='tree']"等同于"/root[person/name='tree']"即找出来的是person结点
        */
        var singleNode = xmlDoc.selectSingleNode("/root/person[gender='female']");//这里的值需要加引号
        alert(singleNode.text);
        alert(singleNode.getAttribute("id"));
        //测试xpath定位
        var sglNode = xmlDoc.selectSingleNode("/root[person/gender='male']");//这里定位不明确.再研究.
        alert(sglNode.text);
        //alert(xmlDoc.xml);
    }
   
// --></mce:script>
</head>
<body>
<div id="divXml"></div>
<input type="button" value="load" onclick="loadXml();" />
<input type="button" value="show" onclick="outXml();" />
<input type="button" value="add" onclick="addXml();" />
<input type="button" value="delete" onclick="deleteXml();" />
<input type="button" value="update" onclick="updateXml();" />
<input type="button" value="query" onclick="queryXml();" />
</body>
</html>
 Xml文件:
view plaincopy to clipboardprint?
01.<?xml version="1.0" encoding="utf-8" ?> 
02.<root> 
03.  <person id="1"> 
04.    <name>tree</name> 
05.    <gender>male</gender> 
06.  </person> 
07.</root>