JavaScript中的XML解析

版权声明:本文为博主原创文章,转载请注明原文链接。 https://blog.csdn.net/hao2244/article/details/50299695

在实际开发中常常会用到XML解析,例如服务器端和客户端的通信等。本文对JavaScript中XML的DOM解析进行讲解。

一、如何解析

DOM,全称是Document Object Model (文档对象模型),是指先将整棵由节点组成的树加载至内存之后,再对节点进行遍历。咱先说说拿到Document对象之后如何遍历(Document 对象代表整个XML文档)。先举一个XML文档的例子

<?xml version="1.0" encoding="ISO-8859-1"?>
<bookshelf>
    <book>
        <name>book1</name>
        <details price="50" author="aaa"/>
    </book>
    <book>
        <name>book2</name>
        <details price="75" author="ccc"/>
    </book>
</bookshelf>
其实,在JavaScript中对XML节点的遍历和对HTML元素的遍历很相似,下面是常用的方法和属性:
<pre name="code" class="javascript">/*
*代码中的document是已获取到的文档对象,至于如何获取,本文第二部分会有介绍
*/
document.getElementsByTagName("book");//返回值是一个nodeList,即节点列表
node.childNodes[0];//这里node是指nodeList的一个元素,childNodes的类型也是nodeList
 
 
 获取节点时可以 
 
var nodelist=document.getElementsByTagName("book");
var node=nodelist[0];//类似于取数组元素
var node=nodelist.item(0);

获取到节点对象后(node),就可以对该节点的属性和nodeValue进行解析。

首先看看属性的解析。

node.attributes[0].name//属性名
node.attributes[0].value//属性值
我们常常也把属性看作是一种节点,即属性节点,那么就可以这样:
node.attributes[0].nodeName//属性名
node.attributes[0].nodeValue//属性值

这里node.attributes[0]是一个节点类型,用nodeName和nodeValue解析其节点名和节点值。提到节点值,有一点值得说明,就是针对上面的那个XML文档,"book1"或"book2"不是name节点的节点值,而是其下的子文本节点,文本节点的节点值才是"book1"或"book2".

二、文档对象(Document)如何获得

1.通过DOMParser解析字符串获得

var xmlText="<?xml version="1.0" encoding="ISO-8859-1"?>";
xmlText+="<book>";
xmlText+="<name>book3</name>";
xmlText+="</book>";
var parser=new DOMParser();
var document=parser.parseFromString(xmlText,"text/xml");
这里xmlText是String类型,包含xml文档的内容,document即时想要获得的文档对象。

2.通过XMLHttpRequest.responseXML直接获得

这是ajax的内容,可以通过请求对象的responseXML属性直接获得想要的Document对象。详细请参看《AJAX的使用详解(javascript实现)》


扫描二维码关注公众号,回复: 3444223 查看本文章

猜你喜欢

转载自blog.csdn.net/hao2244/article/details/50299695