c# - 根据另一个元素值选择 XML 元素

标签 c# xml linq

<Root>
    <Sub>
        <Name>a</Name>
        <Value>1</Value>
    </Sub>
    <Sub>
        <Name>b</Name>
        <Value>2</Value>
    </Sub>
</Root>

如何根据 Name 元素选择 Value 元素的值?

编辑:在 XDocument 中,当我有“a”时如何获得值“1”。

最佳答案

我建议您使用转换节点而不是直接访问 Value 属性:

int value = xdoc.Descendants("Sub")
                .Where(s => (string)s.Element("Name") == "a")
                .Select(s => (int)s.Element("Value"))
                .FirstOrDefault();

如果缺失节点的默认值(零)不符合您的需要,那么您可以在获取值之前检查所需的 Sub 元素是否存在:

var sub = xdoc.Descendants("Sub")
              .FirstOrDefault(s => (string)s.Element("Name") == "a");

if (sub != null)            
    value = (int)sub.Element("Value");

或者使用 XPath 和 Linq 的简单一行:

int value = (int)xdoc.XPathSelectElement("//Sub[Name='a']/Value");

关于c# - 根据另一个元素值选择 XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15346248/

相关文章:

c# - C# 中的简单 LINQ 问题

c# - 加快迭代两个 foreach 循环

c# - 求解复杂的 ODE 集

c# - WPF 中的自定义 MessageBox 按钮

android - 为什么应用程序崩溃,当我尝试通过自定义样式设置文本大小属性时

xml - XPath 命令仅获取特定元素数据而不获取其他元素数据

c# - 如何将 List<string> 转换为 IEnumerator<string>

C#:无法分配给 foreach 迭代变量

c# - 在 C# 中将 Parent 对象转换为 Child 对象

php - 如何使用 SimpleXML 解析忽略错误的 XML