您的位置:首页 > Web前端 > JavaScript

JS解析XML文件和XML字符串

2014-07-24 14:39 351 查看


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>

 
 
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>

 
测试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>

 
 
使用方法
 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;               
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript xml