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)
}
}
先判断浏览器,然后读取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
这些只是部分代码,不过已经足够了