zhyiwww
用平实的笔,记录编程路上的点点滴滴………
posts - 536,comments - 394,trackbacks - 0
刚接触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 阅读(1941) 评论(0)  编辑  收藏 所属分类: javascriptajax

只有注册用户登录后才能发表评论。


网站导航: