【发布时间】:2013-12-07 23:20:12
【问题描述】:
我通过 AJAX 调用从基于 SOAP 的 Web 服务接收以下 XML。
<s:Envelope
xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<ActivityId
CorrelationId="d2ba6844-ec96-4ddc-a3aa-36c8bdd2daeb"
xmlns="http://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">
8c74da56-65c1-4f50-9dc6-547dc9b208a6
</ActivityId>
</s:Header>
<s:Body>
<MyResponse
xmlns="http://foo.example.com/">
<MyResult
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Bar>
1ab6cd3a6499
</Bar>
</MyResult>
</MyResponse>
</s:Body>
</s:Envelope>
我想在(基于 JavaScript 的)客户端上使用 XPath 来解析 XML 以找到 Bar 的值。
我可以使用 XPath 在 iOS 上通过 KissXML 解析这个 XML。我首先将名为baz 的命名空间添加到值为"http://foo.example.com/" 的根元素,然后我可以使用"/s:Envelope/s:Body/baz:MyResponse/baz:MyResult/baz:Bar" 之类的XPath 表达式调用nodesForXPath:error:。
尽管阅读了 MDN 上的 Introduction to using XPath in JavaScript,但我不知道如何正确调用 evaluate 函数。
如何在 JavaScript 中解析这个 XML?
(我对任何外部库没有任何依赖关系,例如 jQuery,所以我希望我的解决方案不需要我添加任何库。)
【问题讨论】:
-
添加“baz”命名空间是什么意思?您不必为此创建命名空间声明。
-
添加
baz命名空间允许我在我的XPath 语句中添加MyResponse、MyResult和Bar前缀,因为它们都在MyResponse元素中声明的默认命名空间中。
标签: javascript xml dom xpath xml-parsing