c# - 读取 XML 中的下一个节点 (Linq to XML C#)

标签 c# xml linq-to-xml

我有一个 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/

相关文章:

mysql - 如何从mysql命令行恢复mysql xml数据库文件?

java - 使用 JAXB 从 XSD 生成元素 java 类

f# - 如何在 F# 中使用 LINQ to XML 提取特定标签?

c# - 在 Linq to XML 中检查节点是否存在

c# - 将 JSON 用于日常事件日志

c# - MonoTouch.Dialog:UISearchBar 颜色

c# - 紧凑的框架文件通过 FTP 上传

C#:泛型方法不调用特定方法重载

xml - XQuery:如何将大型 xml 文件拆分为较小的文件

c# - 在 LINQ 和 C# 中从 XML 文件中检索节点值