从c#/ xpath获取属性值

时间:2011-07-15 08:45:36

标签: c# xml xpath

我有一个app.config文件,需要获取属性的值:

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

Liquid XML Studio提供以下xml:

/configuration/log4net/appender/param[1]

但是,哪些C#代码可以使用xpath来获取值?

4 个答案:

答案 0 :(得分:19)

使用此XPath:

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

根据您阅读XML的方式,使用XPath可能会略有不同。如果您使用的是XDocument,则可以使用XPathSelectElement扩展方法。如果您使用的是XmlDocument,则会有SelectSingleNode方法。如果您使用XPathDocument,则需要编译XPathExpression并将其用于导航器。

答案 1 :(得分:6)

您可以使用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);

答案 2 :(得分:1)

喜欢......

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

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

        Console.Read();

答案 3 :(得分:0)

您可以使用XmlDocument和方法SelectSingleNode - http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx
它会找到一个与你的XPath匹配的节点。

我会使用LINQ to XML(而不是XPath)