Получить значение атрибута из c # / xpath - PullRequest
9 голосов
/ 15 июля 2011

У меня есть файл app.config, и мне нужно получить значение атрибута:

<param name="File" value="C:\"/>

Liquid XML Studio выдает следующее xml:

/configuration/log4net/appender/param[1]

Однако, какой код C # может использовать xpath для получения значения?

Ответы [ 4 ]

19 голосов
/ 15 июля 2011

Используйте этот XPath:

/configuration/log4net/appender/param[@name='File']/@value

В зависимости от того, как вы читаете XML, использование XPath может немного отличаться.Если вы используете XDocument, вы можете использовать метод расширения XPathSelectElement.Если вы используете XmlDocument, есть метод SelectSingleNode.И если вы используете XPathDocument, вам нужно скомпилировать XPathExpression и использовать его против навигатора.

7 голосов
/ 15 июля 2011

Вы можете использовать XmlDocument.См. XmlNode.SelectSingleNode и др.

Пример:

XmlDocument doc = new XmlDocument();
doc.LoadXml(@"<configuration>
<log4net>
<appender>
<param name=""File"" value=""C:\""/>
</appender>
</log4net>
</configuration>");

var node = doc.DocumentElement.SelectSingleNode("//param[@name = 'File']/@value");

Console.WriteLine(node.Value);
1 голос
/ 15 июля 2011

Это как ....

        var result = XDocument.Load("test.xml").Descendants("param");

        foreach (var p in result)
        {
            Console.WriteLine(p.Attribute("name"));
        }

        Console.Read();
0 голосов
/ 15 июля 2011

Вы можете использовать XmlDocument и метод SelectSingleNode - http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx
Он найдет узел, соответствующий вашему XPath.

Я бы сделал это с LINQ to XML (не с XPath)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...