我有这样的场景,由SOAP WS返回
<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:myFunctionEnvelopeName xsi:type="xsd:string" xmlns:ns1="http://fooNameSpace.comm">
<myFunctionName xmlns="http://barNameSpace.com">
[some nodes here]
</myFunctionName>
</ns1:myFunctionEnvelopeName>
</soapenv:Body>
</soapenv:Envelope>我想选择myFunctionName的子节点,但是我有一些问题
ns1命名空间注册到我的XPath中,我只能选择myFunctionEnevelopeName (即使我尝试使用getElementsByTagName(),我也可以接收回0节点)ns2注册barNameSpace.com,我的查询将不会返回元素
我找到的唯一解决办法就是
ns1注册为XPath的命名空间myFunctionEnevelopeName)textContent (当然,这是一个有效的xml)Xpath。ns2注册为全新Xpath的命名空间我相信这是一种聪明的方法,但也许我不知道。有人能给我指点吗?
发布于 2014-03-11 15:48:36
XPath本身并不妨碍您注册多个名称空间,因此可以在XPath表达式中使用多个前缀。例如,/ns1:element-1/ns2:element-2。不使用前缀与没有命名空间的匹配元素是一样的。
DOM有用于将元素与命名空间匹配的方法getElementsByTagNameNS()。
https://stackoverflow.com/questions/22329028
复制相似问题