Linq To XML:从具有未知名称的父级获取子XElement

时间:2010-05-21 15:01:39

标签: .net linq-to-xml

我目前有一些类似于以下的XML

<First Node>
    <Second Node>
        <Third Node>
            <Fourth Node>
               'Lots of Children in here
            </Fourth Node>
        </Third Node>
    </Second Node>
</First Node>

问题是我知道第一,第二和第四节点的确切名称。但是,第三节点可以来自各种可能的名称。在创建XML时,我无法更改XML的结构(它来自第三方接口)。

我尝试过类似以下的linq

tempElement = (From secondElement In xmlDoc.Descendants Select XMLDoc.Element("First Node").Element("Second Node")).FirstOrDefault

我正在使用它来减少不必要的XML。所以在那之后我有一个带

的XElement
<Second Node>
    <Third Node>
        <Fourth Node>
        </Fourth Node>
    </Third Node>
</Second Node>

然后,我正在使用此linq语句尝试仅返回Fourth Node

fourthElement = tempElement.ElementsAfterSelf.FirstOrDefault

这会返回一个空值。什么是正确的linq,或者有更好的方法来做到这一点?

由于

1 个答案:

答案 0 :(得分:2)

只需使用Elements()代替ElementsAfterSelf() - 目前正在 SecondNode中寻找元素,而不是 SecondNode中的元素