谁有javascript读写xml的简单例子,越简单明了越好

解决方案 »

  1.   

    Javascript加载xml文档及操作xml文档的方法Javascript写xml文档?客户端貌似不好写入文件。
      

  2.   

    http://dev.csdn.net/article/78/78093.shtm
      

  3.   

    function createXMLDOM (){
    var   arrXmldom=[ "Microsoft.XMLDOM", 
    "Msxml2.DOMDocument", 
    "Msxml2.DOMDocument.3.0",
     "Msxml2.DOMDocument.4.0", 
     "Msxml2.DOMDocument.5.0"];
    for(var   i=0;i <arrXmldom.length;i++){
    try{
      var   xmlDomValue=new   ActiveXObject(arrXmldom[i]);
      return   xmlDomValue;
       }catch(e){
    try{
    if   (document.implementation&&document.implementation.createDocument){
       var   xmlDomValue=   document.implementation.createDocument( " ", " ",null);
       return   xmlDomValue;
    }
    }catch(e){}
    }
    }
    return   null;
    }
    function readDoc() {
    str ="<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><returncode>1</returncode></root>"
    var doc = createXMLDOM();
    if (doc == null) {
    alert("创建DOM对象失败");
    return null;
    }
    doc.async = false;
    doc.loadXML(str);
    oErr = doc.parseError;
    if (oErr.errorCode != 0) {
    alert("解析XML数据错误:\n" + oErr.reason + "\nLine:" + oErr.line + "\nLinepos:" + oErr.linepos + "\nsrcText:\n" + oErr.srcText);
    return null;
    }
    if (doc.selectSingleNode("//root/returncode") != null) {
    alert(doc.selectSingleNode("//root/returncode").text);
    }
    }
      

  4.   


    <script language="JavaScript">
    <!--
    var doc = new ActiveXObject("Msxml2.DOMDocument"); //ie5.5+,CreateObject("Microsoft.XMLDOM") 
    //加载文档
    //doc.load("b.xml");//创建文件头
    var p = doc.createProcessingInstruction("xml","version='1.0'  encoding='gb2312'");    //添加文件头
        doc.appendChild(p);//用于直接加载时获得根接点
    //var root = doc.documentElement;//两种方式创建根接点
    //    var root = doc.createElement("students");
        var root = doc.createNode(1,"students","");    //创建子接点
        var n = doc.createNode(1,"ttyp","");        //指定子接点文本
            //n.text = " this is a test";
        
        //创建孙接点
        var o = doc.createElement("sex");
            o.text = "男";    //指定其文本    //创建属性
        var r = doc.createAttribute("id");
            r.value="test";        //添加属性
            n.setAttributeNode(r);    //创建第二个属性    
        var r1 = doc.createAttribute("class");
            r1.value="tt";
            
            //添加属性
            n.setAttributeNode(r1);        //删除第二个属性
            n.removeAttribute("class");        //添加孙接点
            n.appendChild(o);        //添加文本接点
            n.appendChild(doc.createTextNode("this is a text node."));        //添加注释
            n.appendChild(doc.createComment("this is a comment\n"));
        
            //添加子接点
            root.appendChild(n);
        
        //复制接点
        var m = n.cloneNode(true);        root.appendChild(m);
            
            //删除接点
            root.removeChild(root.childNodes(0));    //创建数据段
        var c = doc.createCDATASection("this is a cdata");
            c.text = "hi,cdata";
            //添加数据段
            root.appendChild(c);
        
        //添加根接点
        doc.appendChild(root);    //查找接点
        var a = doc.getElementsByTagName("ttyp");
        //var a = doc.selectNodes("//ttyp");    //显示改接点的属性
        for(var i= 0;i<a.length;i++)
        {
            alert(a[i].xml);
            for(var j=0;j<a[i].attributes.length;j++)
            {
                alert(a[i].attributes[j].name);
            }
        }    //修改节点,利用XPATH定位节点
        var b = doc.selectSingleNode("//ttyp/sex");
        b.text = "女";    //alert(doc.xml);    //XML保存(需要在服务端,客户端用FSO)
        //doc.save();
        
        //查看根接点XML
        if(n)
        {
            alert(n.ownerDocument.xml);
        }//-->
    </script>
      

  5.   

    不建议javascript直接操作客户端xml文件.不过也需要一定权限.用的最多的就是javascript操作ajax返回的xml下面例子是读取一个简单的xml,方法很多. 
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <script type="text/javascript">
      //将字符串转化为xml对象
      function convertXml(str){ 
      if(document.all){ //IE
      var xmlDom=new ActiveXObject("Microsoft.XMLDOM") 
      xmlDom.loadXML(str) 
      return xmlDom 
      } 
      else //FF
      return new DOMParser().parseFromString(str, "text/xml") 
      }  var xml="<?xml version=\"1.0\" encoding=\"UTF-8\"?><root><parent><a>A</a><b>B</b><c>C</c></parent><parent><a>A1</a><b>B1</b><c>C1</c></parent></root>";
      var xmlObj=convertXml(xml);
      //如果是ajax返回的xml对象,则直接 var xmlObj=obj.responseXML;
      var o=xmlObj.getElementsByTagName("parent");
      for(var i=0;i<o.length;i++){
    var oo=o[i].childNodes;
    for(var j=0;j<oo.length;j++){
    alert(oo[j].firstChild.nodeValue);
    }
      }
      </script>
     </HEAD> <BODY>
      

  6.   

    看看高率程序,绝对的原创,1,客户端的JavaScript不能写服务器上的XML文件,因为这会引起危险的安全问题;
    2,客户端的JavaScript取服务器上的XML文件,首先假设在服务器上存在:
    (1)文件名VisitUser.xml
    (2),文件结构:
    --------------------------------------------------------------------
    <?xml version="1.0" encoding="gb2312"?>
    <visiter>
    <area areaid="shenzhen">
    <areaname>shenzhen</areaname>
    <user userid="001">
    <name>xiaoM</name>
    <sex>boy</sex><
    jobtitle>web</jobtitle>
    <userip>192.168.1.1</userip>
    <addtime>2009-02-17 15:30:20</addtime>
    </user>
    <user userid="002">
    <name>BBC</name>
    <sex>boy</sex>
    <jobtitle>web2.0</jobtitle>
    <userip>192.168.1.151</userip>
    <addtime>2009-02-19 15:30:20</addtime>
    </user>
    </area>
    <area areaid="guangzhou">
    <areaname>guangzhou</areaname>
    <user userid="003"><name>Arian</name>
    <sex>boy</sex>
    <jobtitle>WEB2.0</jobtitle>
    <userip>192.168.1.151</userip>
    <addtime>2009-2-17 10:57:09</addtime>
    </user>
    </area>
    </visiter>
    --------------------------------------------------------------------
    HTML文件(index.htm)为:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>TEST</title>
    </head>
    <style type="text/css">
    body,td,input{font-family:verdana,Arial; font-size:12px; font-weight:normal;}
    span{font-family:"Arial black",verdana; font-size:16px; font-weight:bold;}
    a:link{font-family:verdana,Arial; font-size:12px; font-weight:normal; color:#FF6600; text-decoration:none;}
    a:visited{font-family:verdana,Arial; font-size:12px; font-weight:normal; color:#FF6600; text-decoration:none;}
    a:hover{font-family:verdana,Arial; font-size:12px; font-weight:normal; color:#CC0000; text-decoration:none;}
    </style>
    <body>
    <p>
    <b>created: </b>2009-04-15;<br>
    <b>athor:</b>shenzhenNBA
    </p>
    <script language="javascript" type="text/javascript">
    function GetXMLData(XMLFileName){
    var xmlDoc;
    var xmlFile;
    var ieFlag="ie";
    xmlFile=XMLFileName;
    if (window.ActiveXObject)
    {
    var activeXNameList=new Array("MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument","Microsoft.XMLDOM","MSXML.DOMDocument");
    for(var h=0;h<activeXNameList.length;h++)
    {
    try{
    xmlDoc=new ActiveXObject(activeXNameList[h]);
    }catch(e){
    continue;
    }
    if(xmlDoc)
    {break; }
    }

    xmlDoc.async=false;
    xmlDoc.load(xmlFile);
    ieFlag="ie";
    }else if(document.implementation && document.implementation.createDocument){
    xmlDoc=document.implementation.createDocument("","",null);
    xmlDoc.async=false;
    xmlDoc.load(xmlFile);
    ieFlag="other";
    }else{
    alert("Can not create XML DOM Document object in your IE.\nMaybe use Microsoft or FireFox or Netscape IE will better.");
    } var strResult="";
    var subNode="";
    var subNode2="";
    var attrib="";
    if(ieFlag=="ie")
    {
    var arealist=xmlDoc.documentElement.getElementsByTagName("area");
    for (var i=0; i< arealist.length; i++)
    {
    try{
    strResult=strResult + "<b>"+arealist[i].childNodes[0].text+"</b>, ";
    }catch(e){ }
    try{
    var userlist=arealist[i].getElementsByTagName("user");
    for(var t=0;t<userlist.length;t++)
    {
    attrib+="<b>"+userlist[t].getAttribute("userid")+"</b>, ";
    subNode+="<b>"+userlist[t].firstChild.text+"</b>, ";
    subNode2+="<b>"+userlist[t].childNodes[2].text+"</b>, ";
    }
    }catch(e){ }
    }
    } if(ieFlag=="other")
    {
    var arealist=xmlDoc.getElementsByTagName("area");
    for(var j=0;j<arealist.length;j++)
    {
    try{
    strResult =strResult+"<b>"+ arealist[j].getElementsByTagName("areaname")[0].firstChild.nodeValue+"</b>, ";
    }catch(e){}
    try{
    var userlist=arealist[j].getElementsByTagName("user");
    for(var k=0;k<userlist.length;k++)
    {
    attrib=attrib+"<b>"+userlist[k].getAttribute("userid")+"</b>, ";
    subNode=subNode+"<b>"+userlist[k].getElementsByTagName("name")[0].childNodes[0].nodeValue+"</b>, ";
    subNode2=subNode2+"<b>"+userlist[k].getElementsByTagName("jobtitle")[0].firstChild.nodeValue+"</b>, ";
    }
    }catch(e){}
    }
    }
    document.write("Exist area : "+strResult);
    document.write("<br>AttributeValue(userid): "+attrib);
    document.write("<br>subNodeValue(Name) : "+subNode);
    document.write("<br>subNodeValue2(Jobtitle) : "+subNode2);
    }
    GetXMLData("VisitUser.xml");
    </script>
    </body>
    </html>HTML文件和XML文件放在同一个目录中,用IIS测试即可,
      

  7.   


      function loadXMLDoc(fname){
                var xmlDoc;
                // code for IE
                if (window.ActiveXObject) {                xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                }
                // code for Mozilla, Firefox, Opera, etc.
                else if (document.implementation && document.implementation.createDocument)
                {
               
                    xmlDoc=document.implementation.createDocument("","",null);
                }else{
                    alert('Your browser cannot handle this script');
                }
                xmlDoc.async=false;
                xmlDoc.load(fname);
                return(xmlDoc);
      }