`

使用Javascript操作XML

阅读更多

摘自:http://book.51cto.com/art/200805/72969.htm

 

11.2  使用Javascript操作XML

11.2.1  MSXML介绍

在IE中,微软提供了MSXML控件来支持XML操作。每个系统安装的MSXML版本都有可能不同,因此在编写程序的时候要注意版本的确定。目前MSXML从旧到新有以下几个版本。

• Microsoft.XmlDom (最初的版本)

• MSXML2.DOMDocument

• MSXML2.DOMDocument.3.0

• MSXML2.DOMDocument.4.0

• MSXML2.DOMDocument.5.0

下面的函数用来获取一个系统中可用的最新版本的DomDocument对象,若都不存在,则返回空,代码如下:

function createDomDoc()
{
var signatures=["Msxml2.DOMDocument.5.0",
"Msxml2.DOMDocument.4.0",
"Msxml2.DOMDocument.3.0",
"Msxml2.DOMDocument",
"Microsoft.XmlDom"];
for(var i=0;i<signatures.length;i++)
{
try{
var domDoc = new ActiveXObject(signatures[i]);
return domDoc;
} catch(e) {
//忽略错误,继续循环尝试下一个版本
}
}
return null;
}

 

11.2.2  在IE浏览器中创建XML片段

下面介绍如何通过DomDocument对象创建一个XML片段,以11.1.3节中的XML片段为例。下面是代码,返回的则是XML文本。

function createXml(doc)
{
var root = doc.createElement("items");
var title = doc.createElement("title");
title.text = '标题';
root.appendChild(title);    //添加title子结点
for(var i=0;i<3;i++)
{
var item = doc.createElement("item");
item.text = '条目'+i;
root.appendChild(item);   //添加item子结点
}
doc.appendChild(root);    //设置root结点
return doc.xml;
}

在这段代码中,createElement方法用来建立一个新的元素结点,参数是这个结点标记的名称。结点的text属性可以用来设置其内容(严格说,就是设置其文本子结点的内容)。

appendChild方法可以在某个元素结点下添加子结点。在创建XML片段的时候,需要使用该方法将构建好的XML附加到DomDocument对象上。XML属性则可以将DomDocument序列化,使其成为一段文本。

在程序中加入下列执行代码:

var domDoc = createDomDoc();
if(domDoc!=null)
{
var xml=createXml(domDoc);
alert(xml);
}
else
{
alert('未安装MSXML控件');
}

运行结果如图11.3所示。

图11.3  通过XML DOM对象创建的XML文本

 

11.2.3  在IE浏览器中解析XML文本

下面介绍如何通过DomDocument对象来解析已有的XML文本。在IE中有2种导入XML文本的办法。一种是通过load方法,其语法代码如下。

domDoc.load("test.xml"); //导入test.xml文件中的内容

该方法只能导入JavaScript所在的本地文件,而不支持远程导入。

第二种方法是通过loadXML方法直接导入,代码是:

xml = "";
domDoc.loadXML(xml); //直接解析xml中包含的XML文本

另外,由于解析XML有时会花费较长的时间,MSXML还提供了异步机制,代码如下:

domDoc.async = true; //异步调用
domDoc.onreadystatechange = function ()  //触发函数
{
if(domDoc.readyState==4) {
doc = domDoc;
document.write("

");
var root = doc.documentElement;
document.write(""+root.childNodes.item(0).text+"");
for(var i=1;i<root.childnodes.length;i++)
{
node = root.childNodes.item(i);
document.write(""+node.text+"");
}
document.write("

");
}
};
domDoc.loadXML(xml);

 

通过这段代码可以看出:设置DomDocument的async属性可以进行异步解析;childNodes属性含有一个包含所有子结点的列表,可以通过childNodes.item(i)来获取索引值为i的子结点;通过childNodes的length属性可以获得子结点的个数;结点的text属性则可以用来获取某个元素结点的内容(或者说是其文本子结点的内容)。

另外,触发函数中的readyState取值有其特定的含义。

• 1:表示正在载入,还没开始解析;

• 2:表示数据已经载入完毕,开始解析,但是DOM仍不可用;

• 3:表示一些数据已经解析完成,DOM已经可以使用,但还不完整,只包含已解析部分的数据。另外,此时的DOM是只读的;

• 4:表示数据解析已经全部完成,DOM已经可以正常使用。

运行这段代码,将会得到如图11.4所示的效果。

通过运行的结果可以看出,触发函数生成的实际上就是本章最开始给出的HTML代码。



分享到:
评论

相关推荐

    Javascript读取xml文件

    #### 二、使用JavaScript读取XML文件的方法 ##### 1. 使用`XMLHttpRequest`对象读取XML文件 - **概述**:`XMLHttpRequest`是JavaScript的一个内置对象,常用于异步加载XML文件或JSON数据等。 - **示例代码**: ...

    javascript操作xml文件示例

    以上就是使用JavaScript操作XML文件的基本步骤和示例。在实际应用中,可能还需要考虑错误处理、兼容性问题以及更复杂的逻辑操作。理解并熟练运用这些技术,可以帮助开发者在前端环境中有效地处理和操作XML数据。

    Javascript读取XML

    总结来说,JavaScript读取XML的基本流程包括: 1. 创建或获取XML文档对象,例如通过`new ActiveXObject("Microsoft.XMLDOM")`(在旧版IE中)或`new DOMParser().parseFromString(xmlString, "text/xml")`(在现代...

    Javascript操作XML和HTML

    总的来说,JavaScript操作XML和HTML是Web开发的基础技能,通过学习和熟练掌握这些技术,开发者能够构建功能丰富的、交互性强的网页应用。随着Web技术的不断发展,JavaScript在处理XML和HTML方面的能力也在不断提升,...

    使用javascript遍历XML文件并显示

    这篇博客“使用javascript遍历XML文件并显示”探讨了如何利用JavaScript对XML文件进行读取和遍历,并将内容呈现在网页上。 首先,我们需要理解XML的基本概念。XML是一种自描述的、结构化的数据格式,用于存储和传输...

    Javascript操作XML Dom

    Javascript操作XML Dom学习资料

    使用javascript解析xml文件或xml格式字符串中文WORD版

    javascript中,不论是解析xml文件,还是xml格式的字符串,都是通过DOM对象来进行操作的。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看   资源截图: 资源太大,传百度网盘了,链接...

    使用javascript最简单的代码输出XML中的内容

    当请求成功后,可以通过`responseXML`属性获取到XML文档对象,然后使用DOM操作方法如`getElementsByTagName`, `getAttribute`, `childNodes`等来读取XML内容。 ```javascript var xmlDoc = xhr.responseXML; ...

    Javascript 操作XML类

    JavaScript操作XML类主要涉及到在前端使用JavaScript与服务器之间交换数据,特别是XML格式的数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于Web应用程序的数据传输。以下是一些关键知识点: ...

    javascript操作xml生成树形菜单

    在本文中,我们将探讨如何使用JavaScript操作XML文档来生成树形菜单。树形菜单是一种常见的用户界面元素,用于组织和展示层次结构的数据,如网站导航或文件系统。在这个例子中,我们将使用提供的XML数据来构建这样一...

    javascript 操作xml的所有属性事件方法和实例

    以上就是JavaScript操作XML的基本知识,包括创建XML对象、DOM操作、事件处理以及通过AJAX获取和解析XML数据的方法。理解这些概念和实践,将有助于你在实际项目中更好地处理XML数据。在提供的“JavaScript节点操作xml...

    JavaScript读取xml文件内容.zip

    JavaScript读取XML文件内容的过程就是这样,这涉及到异步请求、XML解析以及DOM操作。这个过程对于Web开发者来说是必不可少的技能,特别是在处理需要与服务器交换数据的应用中。理解并熟练掌握这些技术,将有助于构建...

    javascript操作XML与HTML

    接下来,我们来看一个简单的示例,用于演示如何使用JavaScript操作XML数据。 ```html &lt;title&gt;JavaScript 操作 XML 示例 &lt;script language="javascript"&gt; function test() { // 创建 DOM 对象 var xmlDoc = ...

    javascript读取xml文件

    以下是一些关于如何在JavaScript中读取XML文件的关键知识点: 1. **DOM解析XML**: - 当XML文件在浏览器环境中加载时,浏览器会自动构建一个DOM树。JavaScript可以通过`document.implementation.createDocument()`...

    js读取xml文件并获取文件内容

    本文将详细介绍如何使用JavaScript读取XML文件以及如何获取文件中的特定内容。 #### JavaScript与XML交互基础 1. **创建XMLHttpRequest对象**: - 首先,需要创建一个`XMLHttpRequest`对象来发送HTTP请求。这个...

    JavaScript读取xml

    在JavaScript中读取XML文件,主要是通过DOM(Document Object Model)接口来实现的。下面我们将深入探讨如何使用JavaScript来处理XML文件。 1. 创建XMLHttpRequest对象 JavaScript中读取XML文件首先需要创建一个...

    XML.rar_javascript_xml

    本教程将深入探讨如何使用JavaScript读取XML信息并进行显示。 首先,我们来看`info.xml`文件,它可能包含类似以下的数据: ```xml 张三 经理 &lt;salary&gt;12000 李四 工程师 &lt;salary&gt;8000 ``` 要读取...

Global site tag (gtag.js) - Google Analytics