我通過AJAX調用從基於SOAP的Web服務接收以下XML。使用XPath在JavaScript中解析(基於SOAP)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>
我想使用XPath的(基於JavaScript的)客戶端解析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'命名空間允許我在我的XPath語句中爲'MyResponse','MyResult'和'Bar'添加前綴,因爲它們都在MyResponse元素中聲明的默認名稱空間中。 – user2719740