zoukankan      html  css  js  c++  java
  • JS解析XML文件和XML字符串

    JS解析XML文件

    <script type='text/javascript'>
        loadXML = function(xmlFile){
            var xmlDoc=null;
            //判断浏览器的类型
            //支持IE浏览器
            if(!window.DOMParser && window.ActiveXObject){
                var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
                for(var i=0;i<xmlDomVersions.length;i++){
                    try{
                        xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                        break;
                    }catch(e){
                    }
                }
            }
            //支持Mozilla浏览器
            else if(document.implementation && document.implementation.createDocument){
                try{
                    /* document.implementation.createDocument('','',null); 方法的三个参数说明
                     * 第一个参数是包含文档所使用的命名空间URI的字符串; 
                     * 第二个参数是包含文档根元素名称的字符串; 
                     * 第三个参数是要创建的文档类型(也称为doctype)
                     */
                    xmlDoc = document.implementation.createDocument('','',null);
                }catch(e){
                }
            }
            else{
                return null;
            }
    
            if(xmlDoc!=null){
                xmlDoc.async = false;
                xmlDoc.load(xmlFile);
            }
            return xmlDoc;
        }
    </script>
    View Code

    JS解析XML字符串

    <script type='text/javascript'>
        loadXML = function(xmlString){
            var xmlDoc=null;
            //判断浏览器的类型
            //支持IE浏览器 
            if(!window.DOMParser && window.ActiveXObject){   //window.DOMParser 判断是否是非ie浏览器
                var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsoft.XMLDOM'];
                for(var i=0;i<xmlDomVersions.length;i++){
                    try{
                        xmlDoc = new ActiveXObject(xmlDomVersions[i]);
                        xmlDoc.async = false;
                        xmlDoc.loadXML(xmlString); //loadXML方法载入xml字符串
                        break;
                    }catch(e){
                    }
                }
            }
            //支持Mozilla浏览器
            else if(window.DOMParser && document.implementation && document.implementation.createDocument){
                try{
                    /* DOMParser 对象解析 XML 文本并返回一个 XML Document 对象。
                     * 要使用 DOMParser,使用不带参数的构造函数来实例化它,然后调用其 parseFromString() 方法
                     * parseFromString(text, contentType) 参数text:要解析的 XML 标记 参数contentType文本的内容类型
                     * 可能是 "text/xml" 、"application/xml" 或 "application/xhtml+xml" 中的一个。注意,不支持 "text/html"。
                     */
                    domParser = new  DOMParser();
                    xmlDoc = domParser.parseFromString(xmlString, 'text/xml');
                }catch(e){
                }
            }
            else{
                return null;
            }
    
            return xmlDoc;
        }
    </script>
    View Code

    测试XML

    <?xml version="1.0" encoding="utf-8" ?>
    <DongFang>
      <Company>
        <cNname>1</cNname>
        <cIP>1</cIP>
      </Company>
      <Company>
        <cNname>2</cNname>
        <cIP>2</cIP>
      </Company>    
      <Company>
        <cNname>3</cNname>
        <cIP>3</cIP>
      </Company>
      <Company>
        <cNname>4</cNname>
        <cIP>4</cIP>
      </Company>
      <Company>
        <cNname>5</cNname>
        <cIP>5</cIP>
      </Company>
      <Company>
        <cNname>6</cNname>
        <cIP>6</cIP>
      </Company>
    </DongFang>
    View Code

    使用方法

     var xmldoc=loadXML(text.xml)

     var elements = xmlDoc.getElementsByTagName("Company");

     for (var i = 0; i < elements.length; i++) {
                    var name = elements[i].getElementsByTagName("cNname")[0].firstChild.nodeValue;
                    var ip = elements[i].getElementsByTagName("cIP")[0].firstChild.nodeValue;               

    }

  • 相关阅读:
    牛客练习赛51 D题
    Educational Codeforces Round 72 (Rated for Div. 2) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) C题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Codeforces Round #583 (Div. 1 + Div. 2, based on Olympiad of Metropolises) A题
    Educational Codeforces Round 72 (Rated for Div. 2) B题
    Educational Codeforces Round 72 (Rated for Div. 2) A题
    《DSP using MATLAB》Problem 7.2
    《DSP using MATLAB》Problem 7.1
    《DSP using MATLAB》Problem 6.24
  • 原文地址:https://www.cnblogs.com/mili3/p/5458240.html
Copyright © 2011-2022 走看看