js如何解析请求返回的XML字符串

例如:用ajax发送了一个请求,后台返回了一个字符串response.getWriter().write("<root><people><name>"+name+"</n... 例如:
用ajax发送了一个请求,后台返回了一个字符串
response.getWriter().write("<root><people><name>" + name + "</name><address>" + address + "</address></people></root>");
假如这个字符串是:
<root><people><name>张三</name><address>北京</address></people></root>
怎么将这个字符串解析成:
name=张三,address=北京
展开
 我来答
百度网友59d1d93f2
2012-03-19 · TA获得超过1.2万个赞
知道小有建树答主
回答量:1063
采纳率:100%
帮助的人:689万
展开全部
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);
}
}
更多追问追答
追问
我问的是请求返回的XML字符串,可以使用先通过request.responseText获取得到
XML字符串,然后再使用你说的方法。
现在我想再问问,如果使用request.responseXML该怎么处理,我用
getElementsByTagName处理只能获取节点,不能得到他的值,
例如:
var name = data.getElementsByTagName("name")[0];
alert(name.nodeName);//输出name
alert(name.nodeValue);//输出null
alert(name.value);//输出undefined
这是为什么?
追答
你当我没回答,ok~
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式