龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > Javascript编程 >

javascript中XMLDOM和parseXML解析xml实现代码

时间:2012-12-29 08:41来源:未知 作者:admin 点击:
分享到:
本文章来介绍了关于javascript中XMLDOM和parseXML解析xml实现代码,有需要的同学可看看用法与参考方法。 通常我们有如下的需求: 第一步: 我们可以定义一个方法:(只用有人调用,就直
本文章来介绍了关于javascript中XMLDOM和parseXML解析xml实现代码,有需要的同学可看看用法与参考方法。

通常我们有如下的需求:

第一步:


我们可以定义一个方法:(只用有人调用,就直接返回解析器)

 

 代码如下
function parseXML(file){
   try //Internet Explorer---ie浏览器的解析器创建方式如下:
   {
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
   }
   catch (e) {
    try //Firefox, Mozilla, Opera, etc. 火狐等浏览器的创建方式。
    {
     xmlDoc = document.implementation.createDocument("", "", null);
    }
    catch (e) {
     alert(e.message);
     return;   //如果创建不成功,就直接返回,不往下走。
    }
   }
   xmlDoc.async = false;
   xmlDoc.load(file);
   return xmlDoc;   //返回创建好的解析器,传给调用者。
  }

第二步:

在js中直接调用方法来获得解析器:

 

 代码如下

<script language="JavaScript">

window.onload = function(){

var xmlDoc = parseXML("file.xml"); 

//调用上面我们定义的方法,给方法一个参数,参数就是你要解析的xml文件,得到这个文件的对象,也就相当于把xml文件包装成了一个document。

}


parseXML参考


//XML 解析

 代码如下

XML.newDocument = function(rootTagName, namespaceURL) {
    if (!rootTagName) rootTagName = "";
    if (!namespaceURL) namespaceURL = "";

    if (document.implementation && document.implementation.createDocument) {
        // This is the W3C standard way to do it
        return document.implementation.createDocument(namespaceURL,
                                                      rootTagName, null);
    }
    else { // This is the IE way to do it
        // Create an empty document as an ActiveX object
        // If there is no root element, this is all we have to do
        var doc = new ActiveXObject("MSXML2.DOMDocument");

        // If there is a root tag, initialize the document
        if (rootTagName) {
            // Look for a namespace prefix
            var prefix = "";
            var tagname = rootTagName;
            var p = rootTagName.indexOf(':');
            if (p != -1) {
                prefix = rootTagName.substring(0, p);
                tagname = rootTagName.substring(p+1);
            }

            // If we have a namespace, we must have a namespace prefix
            // If we don't have a namespace, we discard any prefix
            if (namespaceURL) {
                if (!prefix) prefix = "a0"; // What Firefox uses
            }
            else prefix = "";

            // Create the root element (with optional namespace) as a
            // string of text
            var text = "<" + (prefix?(prefix+":"):"") +  tagname +
                (namespaceURL
                 ?(" xmlns:" + prefix + '="' + namespaceURL +'"')
                 :"") +
                "/>";
            // And parse that text into the empty document
            doc.loadXML(text);
        }
        return doc;
    }
};

function loadFromUrl(url) {
    // Create a new document with the previously defined function
    var xmldoc = XML.newDocument( );
    xmldoc.async = false;  // We want to load synchronously
    xmldoc.load(url);      // Load and parse
    return xmldoc;         // Return the document
}

function xmlToString(xmlDoc)
{
    var xmlString;
    try
    {
        if (navigator.appName == "Microsoft Internet Explorer")
        {
            xmlString = xmlDoc.xml;
        }
        else
        {
            xmlString = new XMLSerializer().serializeToString( xmlDoc );
        }
    }
    catch (e)
    {
        xmlString = null;
    }
    return xmlString;
}

 

function stringToXMLDoc(str)
{
    var xmlDoc = null;
    try
    {
        var xmlDOMObj = new ActiveXObject("Microsoft.XMLDOM");
        xmlDOMObj.async = false;
        xmlDOMObj.loadXML(str);
        xmlDoc = xmlDOMObj;
    }
    catch (e)
    {
        try
        {
            var domParser = new DOMParser;
            xmlDoc = domParser.parseFromString(str, 'text/xml');
        }
        catch (e)
        {
            xmlDoc = null;
        }
    }
    return xmlDoc;

 

}

function stringToXMLDoc(str) {
    if (typeof DOMParser != "undefined") {
        // Mozilla, Firefox, and related browsers
        return (new DOMParser( )).parseFromString(text, "application/xml");
    }
    else if (typeof ActiveXObject != "undefined") {
        // Internet Explorer.
        var doc = XML.newDocument( );  // Create an empty document
        doc.loadXML(text);            // Parse text into it
        return doc;                   // Return it
    }
    else {
        // As a last resort, try loading the document from a data: URL
        // This is supposed to work in Safari. Thanks to Manos Batsis and
        // his Sarissa library (sarissa.sourceforge.net) for this technique.
        var url = "data:text/xml;charset=utf-8," + encodeURIComponent(text);
        var request = new XMLHttpRequest( );
        request.open("GET", url, false);
        request.send(null);
        return request.responseXML;
    }
}


</script>


精彩图集

赞助商链接