zoukankan      html  css  js  c++  java
  • javascript中的XML

    IE下创建DOM并加载XML

    var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
    xmldoc.load(url);  //加载XML文件
    xmldoc.loadXML(“<root><son/></root>”);//加载XML字符串
    xmldoc.documentElement //获取根元素,仅IE支持

    非IE下创建DOM并加载XML

    var xmldoc =document.implementation.createDocument("","",null);
    xmldoc.async =true;    //异步加载
    xmldoc.load(url);

    第一个參数指定文件的命名空间URL。第二个參数用于指定文件元素的标签名,第三个标签用于指定文档类型对象,一般为null

    var xmldoc =document.implementation.createDocument("http://www.x-do.org","root",null);

    这行代码创建了表示<rootxmlns="http://www.x-do.org"/>的XML DOM

    W3C标准的XML DOM不支持loadXML()方法。要将XML字符串解析为DOM。必须使用DOMParser对象,使用其parseFromString方法传入XML字符串表现形式:

          var xmlParser = new DOMParser();
          var xmlDom =xmlParser.parseFromString("<root />","text/xml");  //该方法返回一个XMLDOM对象
          //第二个參数text/xml也能够是application/xml,两者都用来解析XML
          //还能够是application/xhtml+xml,用来解析XHTML,仅仅能用这三种MIME

    与直接解析XML字符串相相应的获取XML字符串的方法,IE中XML DOM对象具有仅仅读的xml属性,而W3C标准则没有相相应的属性,可是提供了能够用于相同的目的的XMLSerializer对象:

        var serializer= new XMLSerializer();
        var xmlStr =serializer.serializeToString(xmlDom,"text/xml");
        //xmlDom为一个XML DOM节点对象
        //而text/xml也可为application/xml
     

    能够把一个函数绑定到XML文档对象的onload事件(对于W3C兼容的浏览器)或onreadystatechange事件(对于WindowsInternet Explorer)。然后,绑定的函数能够用来处理XML文档的内容。

    兼容地创建XML的DOM对象

    if (typeof document.implementation.createDocument != "undefined") {
          xmldoc =document.implementation.createDocument("", "", null);
          xmldoc.onload = displayData;
    } else if(window.ActiveXObject) {
          xmldoc = new ActiveXObject("Microsoft.XMLDOM");
          xmldoc.onreadystatechange = function () {
                 if (docObj.readyState == 4)
                 displayData();
          };
    }
    xmldoc.load(url);
    function displayData(){   }
     

    load()方法仅仅能够加载与包括JavaScript的页面存储于同一server上的文件,也就是说,不能够通过其它人的server加载XML文件

    以同步模式加载文件时,JavaScript代码会等待文件全然加载后才继续运行代码;而以异步模式加载时。不会等待,能够使用事件处理函数来推断文件是否全然加载了。

    默认情况下,文件依照异步模式加载。要进行同步加载,仅仅需设置async特性为false


    JS解析XML实例:

    <script  type="javascript">
    var txt="<note>";
    txt=txt+"<to>George</to>";
    txt=txt+"<from>John</from>";
    txt=txt+"<heading>Reminder</heading>";
    txt=txt+"<body>Don't forget the meeting!</body>";
    txt=txt+"</note>";
    
    
    if (window.DOMParser)  //非IE浏览器
      {
       parser=new DOMParser();
       xmlDoc=parser.parseFromString(txt,"text/xml");
      }
    else //IE浏览器
      {
        xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
       xmlDoc.async="false";
       xmlDoc.loadXML(txt);
      }
    
    
    document.getElementById("to").innerHTML=xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
    document.getElementById("from").innerHTML=xmlDoc.getElementsByTagName("from")[0].childNodes[0].nodeValue;
    document.getElementById("message").innerHTML=xmlDoc.getElementsByTagName("body")[0].childNodes[0].nodeValue;
    </script>



  • 相关阅读:
    php底层HashTable的实现
    【问底】徐汉彬:PHP7和HHVM的性能之争
    linux查找系统中占用磁盘空间最大的文件
    深入理解Yii2.0(yii学习的经典博客)
    梦想天空(关注前端开发技术 html5+css3)
    风雪之隅(Laruence PHP开发组成员, Zend兼职顾问, Yaf, Yar, Yac, Opcache等项目作者、维护者.)
    阿里云收集服务器性能指标的python脚本
    简单5步,释放Mac磁盘空间
    我是如何自学Android,资料分享(2015 版)
    查询tensorflow中的函数用法
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6835598.html
Copyright © 2011-2022 走看看