我有以下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查询是错误的。有人可以提示我如何正确编写此查询吗?非常感谢你!
该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] 删除。
我来说两句