Linq To XML: получить дочерний XElement от родителя с неизвестным именем - PullRequest
1 голос
/ 21 мая 2010

У меня сейчас есть какой-то XML, похожий на следующий

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

Проблема в том, что я знаю точные имена первого, второго и четвертого узлов.Однако Третий Узел может быть из очень широкого диапазона возможных имен.У меня нет возможности изменить структуру 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 Ответ

2 голосов
/ 21 мая 2010

Просто используйте Elements() вместо ElementsAfterSelf() - в настоящее время он ищет элементы после SecondNode вместо элементов в SecondNode.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...