项目场景:
今天遇到了一个需求,大致情况是用JS读取远程链接中的XML文件内容,当时翻阅了很多的资料,很多资料都是比较旧的了。虽然现在大多数使用JSON格式进行交互,但是XML的方式仍然存在于许多项目之中。
问题描述:
有如下的XML文档需要我去读
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/">
<Table>
<ID>1</ID> <Day1>1</Day1> <Day2>2</Day2>
<Day3>3</Day3>
</Table>
</string>
其中<TABLE> 的子节点有非常的多,我需要将这些子节点的数据都获取到出来,我的想法是遍历<TABLE> 节点,然后获取出来。
解决方案:
这里我直接贴出解决的代码以供参考
在IE中
这个方法首先通过获取到TABLE的所有子节点,然后通过获取到这些子节点的标签名,通过标签名调用selectSingleNode(name)方法获取到子节点对象。
docSubmit = new ActiveXObject("Microsoft.XMLDOM");
docSubmit.async = false;
// url填入获取xml内容的地址
docSubmit.load(url);
docSubmit.loadXML(docSubmit.xml.replace(/</g, "<").replace(/>/g, ">"));
nodeList = docSubmit.documentElement.getElementsByTagName("Table");
for (i = 0; i < nodeList.length; i++) {
var currentNodeRoot = nodeList(i);
var chilidLength = currentNodeRoot.childNodes.length;
for (var row = 0; row < chilidLength; row++) {
var name = currentNodeRoot.childNodes[row].tagName;
var val = currentNodeRoot.selectSingleNode(name).text;
}
}
在其它浏览器中
除了加载XML文件方式的不同,其它步骤一致。
Ajax
Ajax方法也可以运用在获取XML数据当中
$.ajax({
url:"xxx.xml",
datatype:"xml",
success:function(data)
{
$(data).find("TABLE").each(function(){
alert($(this).children("ID").text());//获取item 中的 ID
},
error:function(){
},
})
如有问题请留言