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;               

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM