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>

时间: 2024-07-29 04:36:34

javascript中XMLDOM和parseXML解析xml实现代码的相关文章

javascript中加载并解析XML字符串/xml文件

首先,我们需要加载这个xml文件,js中加载xml文件,是通过XMLDOM来进行的.  代码如下 复制代码 <?xml version="1.0" encoding="utf-8" ?> <DongFang>   <Company>     <cNname>1</cNname>     <cIP>1</cIP>   </Company>   <Company>

在java中使用dom4j解析xml(示例代码)_java

虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: 复制代码 代码如下: <?xml version="1.0" encoding=&quo

如何将javascript中的变量值传递到rails代码中以便于使用?

问题描述 function generatePara(){ var a=10}如何将javascript中的变量值传递到rails代码中以便于使用?怎么把a的值传到Controller??class LookController < ApplicationController def form @user = params[:a] endend请大家指教,谢啦!问题补充:我想用 prototypeHelper 里面的方法来解决在解决这个问题,有是办法马?<%= link_to_remote:u

JavaScript中boolean类型之三种情景实例代码_javascript技巧

实例如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Co

J2ME中KXML与NanoXML解析XML总结

XML全称为EXtensible Markup Language,中文称为可扩展标记语言,是一种计算机所能理解的信息符号语言.计算机之间可以通过此种标记语言处理包含各种信息的文章等功能.由于XML是一种允许相关人士自由决定的标记语言,所以称语言的可扩展性.XML作为一个标准,而且由于XML是一种纯文本格式存储文件,从而使得XML本身具备了很好的跨平台的特点,因此被广泛应用于网络数据交换的各个领域,包括网络通讯.不同程序语言平台之间的数据交流等方面. 要使用XML作为网络中传输通讯,势必在传输双方

Android中使用PULL方式解析XML文件深入介绍_Android

一.基本介绍 Android中极力推荐xmlpull方式解析xml. xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar. jar包下载网址 http://www.xmlpull.org/ http://kxml.sourceforge.net/ 二.例子 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 E

Android应用中使用DOM方式解析XML格式数据的基本方法_Android

DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存中,这样使的处理较大的文档效率低. XML基本的节点类型 node - DOM基本的数据类型 Element - 最主要处理的对象是Element Attr - 元素的属性 Text - 一个Element 或者Attr的实际内容 Document - 代表整个XML文档,一个Document对象通常也称为一颗DOM树   1.在src目录下新建一个android.xml <?xml

Android应用中使用DOM方式解析XML格式数据的基本方法

DOM比SAX更容易掌握,因为她没有涉及回调和复杂的状态管理,然而,DOM的实现常常将所有的XML节点保存在内存中,这样使的处理较大的文档效率低. XML基本的节点类型 node - DOM基本的数据类型 Element - 最主要处理的对象是Element Attr - 元素的属性 Text - 一个Element 或者Attr的实际内容 Document - 代表整个XML文档,一个Document对象通常也称为一颗DOM树   1.在src目录下新建一个android.xml <?xml

php中SimpleXML生成与解析xml文件

例,生成xml文档  代码如下 复制代码 class SimpleXMLExtended extends SimpleXMLElement {   public function addCData($cdata_text) {     $node = dom_import_simplexml($this);     $no   = $node->ownerDocument;     $node->appendChild($no->createCDATASection($cdata_tex