js解析xml的问题(如何获取某节点的属性)

JavaScript017

js解析xml的问题(如何获取某节点的属性),第1张

给你个函数,传Node,属性名进去获取属性值,兼容所有浏览器:

function getAttributeValue (xmlNode,attrName){

if(!xmlNode)return ""

if(!xmlNode.attributes) return ""

if(xmlNode.attributes[attrName]!=null) return xmlNode.attributes[attrName].value

if(xmlNode.attributes.getNamedItem(attrName)!=null) return xmlNode.attributes.getNamedItem(attrName).value

return ""

}

获取 p1 的值,就是 getAttributeValue(p,"p1")

先判断浏览器,然后读取xml数据就可以了

//判断不同的浏览器

function InitMf()

{

var mf_change=false

try {

mf_change = new ActiveXObject("Msxml2.XMLHTTP")

} catch (e) {

try {

mf_change = new ActiveXObject("Microsoft.XMLHTTP")

} catch (E) {

mf_change = false

}

}

if (!mf_change &&typeof XMLHttpRequest!='undefined') {

mf_change = new XMLHttpRequest()

}

return mf_change

}

读取数据

var xmlHttp = InitMf()

var HTML = ""

//获得xml文件

xmlHttp.open("GET", xmlfile+"?"+Math.random(), true)

// 设置处理服务器的JS函数,函数又 xmlHttp.onreadystatechange来确定

xmlHttp.onreadystatechange=function() {

//alert(xmlHttp.status)

if (xmlHttp.readyState==4 &&xmlHttp.status==200) {

//ajax的XML传输的解析。获取解析的数据

var xml = xmlHttp.responseXML

var node = xml.getElementsByTagName("item")//获得总结点

for(var i = 0 i <node.length i++){

var str_t = ""

var str_d = ""

var menuHTML = ""

var elem = node[i]

//下面开始获得子节点数据,当然可以继续循环,获得更下面的节点

var title = elem.getElementsByTagName("title")[0].textContent != undefined ? elem.getElementsByTagName("title")[0].textContent : elem.getElementsByTagName("title")[0].text

这些只是部分代码,不过已经足够了

您好!很高兴为您答疑。

getAttribute方法在火狐下也是兼容的,但是与IE下取得的内容是不同的,具体的问题您可以参考此文章:getAttribute的返回值类型(Firefox与IE兼容性)。

如果对我们的回答存在任何疑问,欢迎继续问询。