JS解析XML代码备份---常见问题

1.测试test.xml  ( 解析出xml文件----将结果输出到table中
<?xml version="1.0" encoding="UTF-8"?>
<rautinee>


<member id='1'> 
<name>搜索</name>
<loginName>aa</loginName>
<email>aa@hotmail.com</email>
</member>


<member id='2'>
<name>地点</name>
<loginName>bb</loginName>
<email>bb@hotmail.com</email>
</member>


<member id='3'>
<name>方法</name>
<loginName>cc</loginName>
<email>cc@hotmail.com</email>
</member>


<member id='4'>
<name>广告</name>
<loginName>dd</loginName>
<email>dd@hotmail.com</email>
</member>


</rautinee>
2.js解析代码

<script>
//针对两种浏览器,分别获取xmlDocument对象
function   loadXML(xmlFile) { 
var xmlDoc;
if(window.ActiveXObject) { 
xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); 
xmlDoc.async=false;
xmlDoc.load(xmlFile);
}
else if(document.implementation&&document.implementation.createDocument){ 
xmlDoc=document.implementation.createDocument( "", "",null); 
xmlDoc.async=false;
xmlDoc.load(xmlFile);
} else{
alert('Your   browser   cannot   handle   this   script'); 
}
return xmlDoc;
}


var xmlDoc = loadXML("test.xml");
var members = xmlDoc.getElementsByTagName("member");
var maxRes = members.length;
var str="";
str += "<table>";


str += '<tr>';
str += '<td width="100">id</td>';
str += '<td width="100">name</td>';
str += '<td width="100">loginname</td>';
str += '<td width="100">email</td>';
str += '</tr>';


for(var i=0;i<maxRes;i++){


str += '<tr>';

str += '<td >' + members[i].getAttribute("id") + '</td>';

var oName = members[i].getElementsByTagName("name");
str += '<td >' + oName[0].firstChild.nodeValue + '</td>';

var oLoginName = members[i].getElementsByTagName("loginName");
str += '<td >' + oLoginName[0].firstChild.nodeValue + '</td>';


var oEmail = members[i].getElementsByTagName("email");
str += '<td >' + oEmail[0].firstChild.nodeValue + '</td>';

str += '</tr>';
}
str += "</table>";


document.write(str);
</script>
3  常见错误  
    
在论坛中看到一位朋友遇到一个这样的问题:
他的XML中有这样一个节点,<address />
而这个节点是没有TextNode的,所有他每次用JS脚本读这个节点的值都出错,他的JS语句是这么写的:
var address = basedate.getElementsByTagName("Address")[0].firstChild.nodeValue;
解决的办法就是在赋值之前加一个判断,如下:(加判断空  ---不好使哦)
var address='';
if ( basedate.getElementsByTagName("Address")[0].hasChildNodes())
{
     address = basedate.getElementsByTagName("Address")[0].firstChild.nodeValue;
}


这样就OK勒,就不会出现缺少对象的错误了.  
4  XML解析网络流的问题
    从网络返回的流直接交给XmlPullParser,解析的结果就会出错,将流转换成字符串,然后再转换成流,交给XmlPullParser,结果就正确了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值