js 解析xml 节点值为空时是报没有对象错误

<?xml version='1.0' encoding='UTF-8'?>
<result>
<a>
<b>1</b>
<c>xx</c>
</a>
<a>
<b>2</b>
<c></c>
</a>
<a>
<b>3</b>
<c>xx</c>
</a>
</result>
如上的xml解析到第二个<a></a>中的<c></c>由于c中没有值就报错没有对象了 解析代码如下
var xmlDoc = loadXML(data);
var elements = xmlDoc.getElementsByTagName("a");
var res="";
var ocr_rst="";
alert("elements.length="+elements.length);
for (var i = 0; i < elements.length; i++) {
ocr_rst = elements[i].getElementsByTagName("b")[0].firstChild.nodeValue;
alert(ocr_rst);
res=res+ocr_rst+"@";
alert(res);
}
var arr= new Array();
arr=res.split("@");
document.getElementById('number4').value = arr[0]+arr[1];
document.getElementById('project4').value = arr[2];

第1个回答  2015-01-07
用jquery吧。
var xmlDoc = $(data);

xmlDoc.find("a").each(function(i,o){
alert(i);//你会开f12的话写成console.log(o)也行
alert(o);
});

比自己写简单。本回答被提问者采纳
第2个回答  2015-01-07
先判断数据是否为空 肯定报这个错误追问

具体怎么判断啊 if( elements[i].getElementsByTagName("b")[0]!=null){

} 这样吗?试了不对

追答

undefined 也可能是这个

追问

if(elements[i].getElementsByTagName("ocr_rst")[0]!=null ||elements[i].getElementsByTagName("ocr_rst")[0]==undefined){
。。 }缺少对象

追答

elements[i].getElementsByTagName("ocr_rst")[0]!=undefined

追问

还是缺少对象。。

追答

你用浏览器看下那个是为空的elements[i]
这个开始我晕倒

追问

。。没懂啊 ocr_rst = elements[i].getElementsByTagName("b")[0].firstChild.nodeValue; 浏览器调试工具报错在这一行

追答

你还不会用浏览器测试?

本回答被网友采纳

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网