我想解析以下xml,这是来自restful webservice的响应:
<ns2:list xmlns="urn:foo1:foo" xmlns:ns2="foo2:foo">
<entityData>
<namedAttributes>...</namedAttributes>
<dynamicEnums>...</dynamicEnums>
</entityData>
<ns2:employees>
<ns2:user id="test">
<ns2:name genderTitle="0" firstName="Rock" surName="Solid"></ns2:name>
</ns2:user >
</ns2:employees>
</ns2:list>
如果我尝试使用xpath-expression,我只能将[object Object]作为alert:
function parse(xml){
var test= $(this).find('/ns2:list/ns2:employees/ns2:user[85]/ns2:name');
alert(test);
};
添加.text() - 方法如: var test = $(this).find('/ ns2:list / ns2:employees / ns2:user [85] / ns2:name')。text();只会使警报为空...
xpath表达式不应该是错误的,我使用Firebug来获取表达式,也许在这个例子中有些输入错误。
任何人都知道什么是错的? 或者反过来说:如何提醒firstName这样的字段?
答案 0 :(得分:1)
您可能需要在查询中为名称添加命名空间。
所以你需要这样的东西:
/*[local-name()='list' and namespace-uri()='urn:foo1:foo']
答案 1 :(得分:1)
不是/ list / employees / user [@ id ='test'] / name / @ firstName有效吗?
答案 2 :(得分:0)
您可能需要查看.parseXML
来解析xml这里是一个很好的SO解决方案,用命名空间jQuery XML parsing with namespaces解析xml
这里也是一个很好的链接Namespace Selectors for jQuery
<强>溶液强>
xmlDoc = $.parseXML(xml),
$xml = $(xmlDoc),
$name = $xml.find( "ns2\\:name" ).attr("surName");
alert($name);