刚接触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对象来取。
本例子源代码下载|----------------------------------------------------------------------------------------|
版权声明 版权所有 @zhyiwww
引用请注明来源 http://www.blogjava.net/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2008-06-02 17:40
zhyiwww 阅读(1939)
评论(0) 编辑 收藏 所属分类:
javascript 、
ajax