Я хочу выбрать узлы XML-документа с помощью XPath. Но это не работает, когда XML-документ содержит пространства имен xml. Как я могу найти узлы с XPath с учетом пространств имен?Выберите узлы с XPath, когда XML-документ содержит пространства имен
Это мой XML Document (упрощенно):
<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>
Я хочу, чтобы получить все Url теги в TraceListener теге RemoteTracer тега. Это, как я получить их, но это только работу, если документ XML не использовать пространство имен:
componentConfigXmlDocument = new XmlDocument();
componentConfigXmlDocument.LoadXml(myXmlDocumentCode);
var remoteTracers = componentConfigXmlDocument.SelectNodes("//RemoteTracer/TraceListener/Url");
В настоящее время мой обходной путь, чтобы удалить все пространства имен из необработанного строки XML с использованием регулярных выражений, перед загрузкой XML. Тогда мой SelectNodes() работает отлично. Но это не правильное решение.
Возможный дубликат [Использование Xpath С умолчанию пространство имен в C#] (HTTP: // StackOverflow .com/questions/585812/using-xpath-with-default-namespace-in-c-sharp) –
На этот вопрос в StackOverflow есть 1000 ответов. –