我有一个app.config文件,需要获取属性的值:
<param name="File" value="C:\"/>
Liquid XML Studio生成了以下xml:
/configuration/log4net/appender/param[1]
然而,C#代码如何使用xpath获取值?
使用此XPath:
/configuration/log4net/appender/param[@name='File']/@value
根据你读取XML的方式,使用XPath的代码可能会有所不同。如果你正在使用XDocument
,你可以像这样使用XPathEvaluate
扩展方法:
var eval = xml.XPathEvaluate("/configuration/log4net/appender/param[@name='File']/@value");
var value = ((IEnumerable)eval).OfType<XAttribute>().Single().Value;
如果您正在使用 XmlDocument
,则可以使用 SelectSingleNode()
方法。如果您使用的是 XPathDocument
,则需要编译一个 XPathExpression
,然后根据该 XPath 对导航器进行操作。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);
它就像......
var result = XDocument.Load("test.xml").Descendants("param");
foreach (var p in result)
{
Console.WriteLine(p.Attribute("name"));
}
Console.Read();