[英]Get attribute value from c#/xpath
我有一個 app.config 文件,需要獲取屬性的值:
<param name="File" value="C:\"/>
液體 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();
您可以使用 XmlDocument 和方法 SelectSingleNode - http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx
它將找到與您的 XPath 匹配的節點。
我會用 LINQ 到 XML 來做這個(不是用 XPath)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.