日期:2014-05-16  浏览次数:20388 次

在firefox浏览器下用javascript解析XML

刚接触ajax不久,想通过ajax实现从服务器上动态取得xml数据,然后,在客户端动态更新并显示。
但是,再firefox中,在取得xmlDom后,用在IE下面解析的办法(网上有很多的资料,也可以我的总结),怎么也不能取得标签文本的值。

经过多次实践,才发现了下面的方法是可以实现的。原来很简单(见笑了…………)

服务器返回XML结果如下:
<?xml version="1.0" encoding="UTF-8" ?>
- <citys>
<city>shanghai</city>
<city>tianjin</city>
<city>chengdu</city>
<city>chongqing</city>
<city>hainan</city>
</citys>

==========================================================================
解析如下:

// 取得的是xmlDom对象
var doc = response.responseXML;
???????? // 根据标签来取得List对象
??????? var cs = doc.getElementsByTagName("city");?????
??????? alert(cs.length);
???????
??????? for(var i=0;i<cs.length;i++){
????????? var a = cs[i];
????????? //alert(a);
????????? //alert(a.nodeName);
????????? //alert(a.nodeValue);
????????? var b = a.childNodes;
??? ?? ?? (我的疑问:为什么需要取得b,cs[i]不就是一个city的对象了,为什么还需要取得数组,然后再取其元素,疑惑中)
????????? //alert(b);
????????? var c=b[0];
????????? alert(c.nodeValue);
??????? }

cs取得的结果应该是:
<city>shanghai</city>
<city>tianjin</city>
<city>chengdu</city>
<city>chongqing</city>
<city>hainan</city>
city Element对象的一个集合。
所以,对于a来说,那么就应该是
<city>shanghai</city>
每一个city Element元素的对象了,但是,错了。此处得到的是一个
Element标签元素的一个数组。
也就是说用childNodes方法取得的对象永远是数组对象。那么,你想遍历其中元素的话,就需要用c对象来取。

本例子源代码下载

来源于:http://www.blogjava.net/zhyiwww/archive/2008/06/02/205376.html