我有一些不稳定的 XML,我正试图从中读取值。
<text>
<term>a</term>
<line>
<elm>data here</elm>
</line>
<term>b</term>
<line>
<elm>data here</elm>
</line>
<term>c</term>
<line>
<elm>data here</elm>
</line>
</text>
此时我只能访问 3 个 line
元素。
当我遍历每一行时,对于第一行,我想找到恰好将“a”作为值的元素 term
,因为它是“最接近”第一行子元素的元素。
除了我想找到最接近的 term
元素外,第二行也一样,在本例中是“b”
如何使用 LINQ 可靠地完成此操作?
最佳答案
如果 term
元素总是正好在 line
元素之前,您可以使用
XElement.ElementsBeforeSelf().Last()
所以
var element = XElement.Load(@"previous-sibling.xml");
var termsQuery =
from line in element.Descendants("line")
select new
{
Elm = line.Descendants("elm").FirstOrDefault().Value,
Term = line.ElementsBeforeSelf().LastOrDefault().Value
};
关于C# Linq to Sql XML 检索父级中最近的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14612730/