我有一個XML字符串像這樣:使用createNSResolver在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中定義的名稱空間,還是以其他方式構建文檔中存在的所有名稱空間的列表?
謝謝!
感謝您的所有信息。 –