XPath和XPathSelectElement
我有以下xml
我已经尝试了所有内容来读取db2(=“Name2”)的名称以及XPath查询的所有可能组合,但从未得到预期的结果。
我的代码到目前为止:
var query = "root/databases/db2.. "; // here I've tried everything var doc = XDocument.Load("myconfig.xml"); var dbName = doc.XPathSelectElement(query);
获取“Name2”(属性值)的正确查询是什么?
谢谢你的帮助。
var dbName = doc.XPathSelectElement("root/databases/db2").Attribute("name");
XPathSelectElement方法只能用于选择元素,而不能用于选择属性。
对于属性,您需要使用更通用的XPathEvaluate方法 :
var result = ((IEnumerable
要获取db2
元素的name
属性的值( Name2
),请尝试以下操作:
var query = "root/databases/db2"; var doc = XDocument.Load("myconfig.xml"); var dbElement = doc.XPathSelectElement(query); Console.WriteLine(dbElement.Attribute("name").Value);
如果您不知道元素的名称( db2
),但确实知道它具有server
属性,请尝试以下操作:
var query = "root/databases/*[@server]"; var doc = XDocument.Load("myconfig.xml"); var dbElement = doc.XPathSelectElement(query); Console.WriteLine(dbElement.Attribute("name").Value);
如果你想做与前一个例子相同的事情,但是有多个具有server
属性的元素,并且你想在它们之间进行选择,请尝试这样做:
var query = "root/databases/*[@server='myserver']"; var doc = XDocument.Load("myconfig.xml"); var dbElement = doc.XPathSelectElement(query); Console.WriteLine(dbElement.Attribute("name").Value);