簡體   English   中英

從 c#/xpath 獲取屬性值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM