LINQ over XML: найдите родительский уровень - PullRequest
1 голос
/ 20 марта 2009

Я использую C # и LINQ для обхода моего XDocument.

Допустим, у меня есть XML как это:

<Root>
  <Element ID="1">
    <Element ID="2">
      <Element ID="3" />
      ...
    </Element>
    <Element ID="50">
      ...
    </Element>
  </Element>
  <Element ID="x">
    ...
  </Element>
</Root>

Теперь, допустим, у меня есть идентификатор 3, и мне удалось найти элемент с этим идентификатором. На этом этапе я хочу найти идентификатор родительского узла верхнего уровня (это родитель, который находится на один уровень ниже корневого). В этом случае я хочу найти элемент с идентификатором 1. Я могу сделать это:

myElement.Parent.Parent

Но я не знаю, как много уровней может быть, поэтому мне, вероятно, нужна рекурсия. Однако я вспоминаю, что XDocument читается только для пересылки. Насколько дорого найти Родителя - рекурсивно? Каков наилучший способ сделать это?

Размер моих XML-файлов может достигать 500 КБ.

1 Ответ

1 голос
/ 20 марта 2009

Нет, XDocument не только вперед. Вы думаете о XStreamingElement?

Я полагаю, что родительский элемент хранится как поле как часть XObject, поэтому его рекурсивная выборка стоит дешево.

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