我想使用XPath選擇XML文檔的節點。但是,當XML文檔包含xml命名空間時它不起作用。 如何在考慮名稱空間的情況下使用XPath搜索節點?當XML文檔包含名稱空間時,選擇包含XPath的節點
這是我的XML文檔(簡體):
<ComponentSettings xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Company.Product.Components.Model">
<Created xmlns="http://schemas.datacontract.org/2004/07/Company.Configuration">2016-12-14T10:29:28.5614696+01:00</Created>
<LastLoaded i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/Company.Configuration" />
<LastSaved xmlns="http://schemas.datacontract.org/2004/07/Company.Configuration">2016-12-14T16:31:37.876987+01:00</LastSaved>
<RemoteTracer>
<TraceListener>
<Key>f987d7bb-9dea-49b4-a689-88c4452d98e3</Key>
<Url>http://192.168.56.1:9343/</Url>
</TraceListener>
</RemoteTracer>
</ComponentSettings>
我希望得到一個RemoteTracer標籤的標籤TraceListener的所有URL標記。 這是我如何得到他們,但這只是工作,如果XML文檔不使用命名空間:
componentConfigXmlDocument = new XmlDocument();
componentConfigXmlDocument.LoadXml(myXmlDocumentCode);
var remoteTracers = componentConfigXmlDocument.SelectNodes("//RemoteTracer/TraceListener/Url");
目前,我的解決方法是刪除使用正則表達式從XML原始字符串的所有命名空間,裝載前XML。然後我的SelectNodes()工作正常。但那不是合適的解決方案。
[在C#中使用XPath使用默認命名空間]的可能的複製(HTTP://計算器.com/questions/585812/using-xpath-with-default-namespace-in-c-sharp) –
在StackOverflow上有1000個關於這個問題的答案。 –