C#Linq到Sql XML检索父级中最近的元素
我有一些不可靠的XML,我正试图从中读取值C#Linq到Sql XML检索父级中最近的元素,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我有一些不可靠的XML,我正试图从中读取值 <text> <term>a</term> <line> <elm>data here</elm> </line> <term>b</term> <line> <elm>data here</elm> </line> <term>c</t
<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>
A.
这里的数据
B
这里的数据
C
这里的数据
此时,我只能访问3个行
元素
当我在每一行上循环时,对于第一行,我想找到元素term
,该元素恰好有“a”作为值,因为它与第一行子元素“最接近”
第二行也是一样,只是我想找到最近的术语元素,在本例中是“b”
如何使用LINQ可靠地实现这一点?如果术语
元素始终位于行
元素之前,则可以使用
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
};