上一节:
下一节:

  XML 解析器

  • 定义

    所有主要的浏览器都有一个内置的 XML 解析器来访问和操作 XML
    XML DOM(文档对象模型)定义了用于访问和编辑 XML 的属性和方法。
    但是,在可以访问 XML 文档之前,必须将其加载到 XML DOM 对象中。
    所有现代的浏览器都有一个内置的 XML 解析器,可以将文本转换为 XML DOM 对象。
  • 解析文本字符串

    本示例将文本字符串解析为 XML DOM 对象,并使用 JavaScript 从中提取信息:
    <html>
    <body>
    <p id="demo"></p>
    <script>
        var text, parser, xmlDoc;
        text = "<bookstore><book>" +
        "<title>日常意大利语</title>" +
        "<author>贾达·德·劳伦蒂斯</author>" +
        "<year>2005</year>" +
        "</book></bookstore>";
    
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(text,"text/xml");
    
        document.getElementById("demo").innerHTML =
        xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
    </script>
    
    </body>
    </html>
    
    
    尝试一下
    代码解释
    定义了一个文本字符串:
    text = "<bookstore><book>" +
    "<title>日常意大利语</title>" +
    "<author>贾达·德·劳伦蒂斯</author>" +
    "<year>2005</year>" +
    "</book></bookstore>";
    
    
    XML DOM 解析器已创建:
    parser = new DOMParser();
    
    
    解析器使用文本字符串创建一个新的 XML DOM 对象:
    xmlDoc = parser.parseFromString(text,"text/xml");
    
    
  • Internet Explorer 的旧版本

    Internet Explorer 的旧版本(IE5,IE6,IE7,IE8)不支持 DOMParser 对象。
    要处理旧版本的 Internet Explorer,请检查浏览器是否支持 DOMParser 对象,或者创建ActiveXObject
    <html>
    <body>
    <p id="demo"></p>
    <script>
        var text, parser, xmlDoc;
        text = "<bookstore><book>" +
        "<title>日常意大利语</title>" +
        "<author>贾达·德·劳伦蒂斯</author>" +
        "<year>2005</year>" +
        "</book></bookstore>";
    
        if (window.DOMParser) {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(text,"text/xml");
        } else {
            xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
            xmlDoc.async = false;
            xmlDoc.loadXML(text); 
        } 
        
        document.getElementById("demo").innerHTML =
        xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;  
    </script>
    
    </body>
    </html>
    
    
    尝试一下
  • XMLHttpRequest对象

    XMLHttpRequest 对象具有内置的 XML 解析器。
    responseText 属性以字符串形式返回响应。
    responseXML 属性将响应作为 XML DOM 对象返回。
    如果要将响应用作 XML DOM 对象,则可以使用 responseXML 属性。
    请求文件 cd_catalog.xml 并将响应用作 XML DOM 对象:
    <html>
    <body>
    <h2>我的CD收藏</h2>
    <button type="button" onclick="loadXMLDoc()">获取我的CD收藏</button>
    <p id="demo"></p>
    <script>
      function loadXMLDoc() {
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
          if (this.readyState == 4 && this.status == 200) {
            myFunction(this);
          }
        };
        xmlhttp.open("GET", "/jc_script/xml/cd_catalog.xml", true);
        xmlhttp.send();
      }
      
      function myFunction(xml) {
        var x, i, xmlDoc, txt;
        xmlDoc = xml.responseXML;
        txt = "";
        x = xmlDoc.getElementsByTagName("ARTIST");
        for (i = 0; i< x.length; i++) {
          txt += x[i].childNodes[0].nodeValue + "<br>";
        }
        document.getElementById("demo").innerHTML = txt;
      }
    </script>
    
    </body>
    </html>
    
    
    尝试一下
上一节:
下一节: