我有一个 XML 文档(没有属性),其设置如下:
<variables>
<variable>
<name>Name_Value</name>
<value>Value of Entry</value>
</variable>
<variable>
<name>Name_Value2</name>
<value>Value of Entry2</value>
</variable>
</variables>
我使用 LINQ to XML 来获取所有 <name>
的列表。文档中的值。这些名称值按字母顺序显示在列表框控件中(这不是 XML 文档中名称的顺序)。
当在列表框中选择一个项目时,我想将该项目的名称传递给一个方法,该方法将在 XML 文档中搜索 <name>
中的该值。节点。找到后,我想找到下一个节点(即 <value>
节点)并将其值作为字符串返回。
我已经尝试了各种方法来获取此信息,但显然我对 LINQ to XML 的了解不够,无法完成这项工作。只能为此提供解决方案吗?
最佳答案
XDocument xdoc = XDocument.Load(path_to_xml);
var query = from v in xdoc.Descendants("variable")
where (string)v.Element("name") == name
select (string)v.Element("value");
此 Linq 查询将返回 IEnumerbale<string>
与您的名字相匹配的值元素。如果您确定指定名称的变量不应超过一个
string value = query.SingleOrDefault();
或者在单个查询中:
string value = xdoc.Descendants("variable")
.Where(v => (string)v.Element("name") == name)
.Select(v => (string)v.Element("value"))
.SingleOrDefault();
关于c# - 读取 XML 中的下一个节点 (Linq to XML C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14280901/