首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

js解析XML有关问题,求。

2012-10-23 
js解析XML问题,求高手指点。。。问题描述:现在有一个从后台返回的XML被赋值在xmlReturnDoc这个变量中,我想用j

js解析XML问题,求高手指点。。。
问题描述:现在有一个从后台返回的XML被赋值在xmlReturnDoc这个变量中,我想用js对其进行解析,让里面的内容单个的显示出来!
var showXML = xmlReturnDoc.xml;
  var ShowValues = showXML .getElementsByTagName("USERSINFO").chileNodes[0].nodeValue;//USERSINFO节点名称
  alert(ShowValues);
用上面的方法提示对象不支持!求高手指点啊!

[解决办法]
XML结构呢?

注意不要使用childNodes属性在firefox下,要不空白节点也算在childNodes里面的,改成getElementsByTagName来获取,并且getElementsByTagName获取到的是节点数组,要[]获取节点后才能childNodes操作,

得到xml的dom后不需要获取.xml了,是childNodes,不是chileNodes

JScript code
var showXML = xmlReturnDoc///////.xml;//var ShowValues = showXML.getElementsByTagName("USERSINFO").chileNodes[0].nodeValue;//USERSINFO节点名称  var ShowValues = showXML.getElementsByTagName("USERSINFO")[0].childNodes[0].nodeValue;//USERSINFO节点名称alert(ShowValues);
[解决办法]
FF中的XMLDocument对象没有xml属性.node.xml这个是IE特有的...
你需要创建一个XMLSerializer对象
var oSeria = new XMLSerializer();
oSeria.serializeToString(oNode , "text/xml"); 
这样才能返回你要的节点值。这之前你还需要判断浏览器类型,最好将这个方法封装为一个函数 定义在文档的Node类里面,很是麻烦 =.=
如果你想弄的明白,请参考<<javascript高级编程>>第十五章 Javascript中的xml第一节的第二小节。那里有完整的代码,包括兼容两种类型的浏览器(IE/DOM)。
[解决办法]
你最好在后台将xmlReturnDoc放到请求中
XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("ISO8859-1"));
outputter.output(xmlReturnDoc,response.getWriter());
前台var doc = xmlHttpRequest.responseXML;就能获取到了
[解决办法]
节点的操作,在浏览器之间是有差异性的

而且,#1楼的说的getElementsByTagName这个和getElementsByName两个得到的都是对象集合,使用时都是需要指定索引的。
[解决办法]
1楼说得对, 浏览器不同,解析的方法有时候就不一样的。
[解决办法]
话说,getElementsByName标签是不支持获取div,p,h标签的,这个在ie下试过,其他浏览器貌似也有这个问题~~~

热点排行