我有一个这样的 xml 字符串:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ExecuteResponse xmlns="http://schemas.microsoft.com/xrm/2011/Contracts/Services">
<ExecuteResult i:type="a:RetrieveEntityResponse" xmlns:a="http://schemas.microsoft.com/xrm/2011/Contracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:ResponseName>RetrieveEntity</a:ResponseName>
<a:Results xmlns:b="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
<a:KeyValuePairOfstringanyType>
<b:key>Some Value</b:key>
</a:KeyValuePairOfstringanyType>
</a:Results>
</ExecuteResult>
</ExecuteResponse>
</s:Body>
</s:Envelope>
我正在尝试按照以下方式做一些事情:
var resolver = xmlDoc.createNSResolver(xmlDoc.documentElement);
return new XPathEvaluator().evaluate("//b:key", xmlDoc.documentElement, resolver, XPathResult.ANY_TYPE, null);
没有找到关键节点,原因是我调用的时候
resolver.lookupNamespaceURI("b")
直接返回null。但是,当我这样做时它确实返回了一些东西
resolver.lookupNamespaceURI("s")
所以我最好的猜测是 createNSResolver 方法只在传入的 xml 文档的根节点中查找命名空间。有没有办法让它找到在 xml 中定义的所有命名空间,或者其他方式来构建文档中存在的所有命名空间的列表?
谢谢!