js如何解析xml字符串

JavaScript012

js如何解析xml字符串,第1张

var xmlStr = '<root><people><name>张三</name><address>北京</address></people></root>'

var result = null

eval('result=['+$(xmlStr).find('people').map(function(){

return '{'+$('*',this).map(function(){

return $(this).attr('tagName') + ':"' + $(this).text() + '"'

}).get().join(',') + '}'

}).get().join('],[')+']')

alert(result)

//result是一个数组,如果有多个people节点,则为:[{name:"张三",address="北京"},{name:"李四",address="上海"}]

不好意思偏题了,以下是你要的结果:

var result = $(xmlStr).find('people').children().map(function(){

return $(this).attr('tagName')+'='+$(this).text()

}).get().join()

上面的都是jquery的写法:

javascript的话:

用COM操作:

object xmlDoc = new ActiveObject('msxml2')

xmlDoc.loadXml(xmlStr)

var pNode = xmlDoc.selectSignNode('people')

var result = ''

for(var node in pNode.selectNodes('*')){

result+=(result.length>0?',':'') + node.nodeName+'='+node.innerText

}

alert(reuslt)

或者用DOM操作:

<xml id='testXml' />

var result = ''

with(document.getElementById('testXml')){

innerHTML = xmlStr

for(var child in children){

result += ',' + child.tagName + '=' + child.innerText

}

if(result.length >0){

result = result.substring(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")

用jquery吧。

var xmlDoc = $(data)

xmlDoc.find("a").each(function(i,o){

alert(i)//你会开f12的话写成console.log(o)也行

alert(o)

})

http://blog.csdn.net/pan_junbiao/article/details/7441003

比自己写简单。