js解析xml会因为浏览器的不同使用的api也有所区别,jquery在解析时就做的比较好。
下面看看jquery解析xml文档和xml字符串。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> New Document </title>
<meta name="Author" content="lushuaiyin">
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
用jquery解析xml文档和xml字符串cccccccccccccccccccccccccc
</body>
</html>
<script>
//解析xml文档/
var xmlDoc=null;
//支持IE浏览器
if(window.ActiveXObject){
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
}
//支持Mozilla浏览器
else if(document.implementation && document.implementation.createDocument){
xmlDoc = document.implementation.createDocument('','',null);
}
else{
alert("here");
}
if(xmlDoc!=null){
xmlDoc.async = false;
xmlDoc.load("house.xml");
}
//解析
//$(xmlDoc).find('city').each( function () {
// var cname = $( this ).attr('name');
// var price = $( this ).children('price').text();
// alert($( this ).text()+"---------"+cname+"-----"+price);
// } );
/*
分别弹出如下(在ie和火狐下都是一样的):
150万一室三居----北京---150万
200万-----上海-----200万
230万-----杭州-----230万
-------南京-------
*/
//jquery解析xml字符串
var str2="<address>"+
"<city name=\"河北\">"+
" <price>120万</price>"+
"<type>两室三居</type>"+
"</city>"+
"<city name=\"邯郸\"></city>"+
"</address>";
//跨浏览器,ie和火狐解析xml使用的解析器是不一样的。
var xmlStrDoc=null;
if (window.DOMParser){// Mozilla Explorer
parser=new DOMParser();
xmlStrDoc=parser.parseFromString(str2,"text/xml");
}else{// Internet Explorer
xmlStrDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlStrDoc.async="false";
xmlStrDoc.loadXML(str2);
}
//解析
$(xmlStrDoc).find('city').each( function () {
var cname = $( this ).attr('name');
var price = $( this ).children('price').text();
alert($( this ).text()+"---------"+cname+"-----"+price);
} );
/*
分别弹出如下(在ie和火狐下都是一样的):
120万两室三居----河北---120万
--------邯郸-----
*/
</script>
jquery解析的还是xmldom,它把解析的函数封装了,但这个dom还是会因为浏览器的不同而不同。
所以一开始我们还要根据浏览器new出这个dom。有了正确的dom剩下就是解析了。这才是jquery
封装的比较好的地方。
至于jquery能不能把这个dom(也就是本例中的xmlDoc和xmlStrDoc)也封装起来,本人现在还不清楚。
网上也没找到相关例子。(大家谁知道欢迎给我留言)
house.xml文档:
<?xml version="1.0" encoding="utf-8" ?>
<address>
<city name="北京">
<price>150万</price>
<type>一室三居</type>
</city>
<city name="上海">
<price>200万 </price>
</city>
<city name="杭州">
<price>230万</price>
</city>
<city name="南京"></city>
</address>