开发者

Get attribute value from c#/xpath

开发者 https://www.devze.com 2023-03-20 23:24 出处:网络
I have an app.config file, and need to get value of an attribute: 开发者_StackOverflow<param name=\"File\" value=\"C:\\\"/>

I have an app.config file, and need to get value of an attribute:

开发者_StackOverflow<param name="File" value="C:\"/>

Liquid XML Studio gives the following xml:

/configuration/log4net/appender/param[1]

However, what C# code can use xpath to get a value?


Use this XPath:

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

Depending on how you read the XML, the code for using the XPath may differ a bit. If you're using XDocument, you can use the XPathEvaluate extension method like so:

var eval = xml.XPathEvaluate("/configuration/log4net/appender/param[@name='File']/@value");
var value = ((IEnumerable)eval).OfType<XAttribute>().Single().Value;

If you're using XmlDocument, there is a SelectSingleNode() method. And if you use an XPathDocument, you need to compile a XPathExpression and then use this XPath against a navigator.


You can use XmlDocument. See XmlNode.SelectSingleNode and others.

Example:

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);


It like ....

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

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

        Console.Read();


You can use XmlDocument and a method SelectSingleNode - http://msdn.microsoft.com/en-us/library/fb63z0tw.aspx
It will find a node matching your XPath.

I would do this with LINQ to XML (not with XPath)

0

精彩评论

暂无评论...
验证码 换一张
取 消