Linq to XML查询返回null

阿图罗

我有以下XML文件:

<?xml version="1.0" encoding="utf-8"?>
<tmx version="1.4">
  <header/>
  <body>
    <tu>
      <tuv lang="en">
        <seg>Hello?</seg>
      </tuv>
      <tuv lang="es">
        <seg>¿Diga?</seg>
      </tuv>
    </tu>
  </body>
</tmx>

我正在尝试使用以下代码来检索第一个<seg>标签的内容

root.Elements("tuv")
    .Where(e => e.Attribute("lang").Value.Equals("en"))
    .Select(e => e.Elements("seg"))
    .SingleOrDefault()
    .Where(d => d.Value.Equals(originalText))
    .SingleOrDefault()
    .Value;

originaltext等于“你好?” 在这种情况下。但是,给出的结果为空。我认为我的linq查询是错误的。有人可以提示我如何正确编写此查询吗?非常感谢你!

卢卡斯·卡布特(Lukas Kabrt)

Elements函数返回的直接子元素的集合root您应该使用Descendants返回所有后代元素的集合方法。

root.Descendants("tuv").Where(e => e.Attribute("lang").Value == "en")
                       .Select(e => e.Elements("seg")).SingleOrDefault() 
                       .Where(d => d.Value == originalText).SingleOrDefault().Value

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章