六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 34|回复: 0

在firefox浏览器下用javascript解析XML

[复制链接]

升级  10.75%

389

主题

389

主题

389

主题

探花

Rank: 6Rank: 6

积分
1215
 楼主| 发表于 2013-1-23 02:17:30 | 显示全部楼层 |阅读模式
刚接触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;
          //alert(a);
          //alert(a.nodeName);
          //alert(a.nodeValue);
          var b = a.childNodes;
          (我的疑问:为什么需要取得b,cs不就是一个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
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表