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,结果就正确了。
JS解析XML代码备份---常见问题
最新推荐文章于 2015-05-18 16:09:27 发布