C # Linq XML вытащить узлы из документа - PullRequest
1 голос
/ 10 сентября 2010

Я пытаюсь использовать Linq XML для выбора количества узлов и дочерних элементов, но ужасно запутался!

В приведенном ниже примере XML мне нужно вытащить все и все требуемыес их дочерними узлами, но без других узлов между Самыми желаемыми и Разыскиваемыми узлами.

Это потому, что за каждым Самым желанным может следовать любое количество Требуемых, и Разыскиваемые относятся к предыдущим Самым популярным.Я даже запутываю себя, печатая это !!!

Как я могу сделать это в C # ??

<root>
  <top>
    <NotWanted3>
    </NotWanted3>
    <MostWanted>
      <UniqueKey>1</UniqueKey>
      <QuoteNum>1</QuoteNum>
    </MostWanted>
    <NotWanted2>
      <UniqueKey>1</UniqueKey>
      <QuoteNum>1</QuoteNum>
    </NotWanted2>
    <NotWanted1>
      <UniqueKey>0001</UniqueKey>
    </NotWanted1>
    <Wanted>
      <Seg>
        <SegNum>1</SegNum>
      </Seg>
    </Wanted>
    <Wanted>
      <Seg>
        <SegNum>2</SegNum>
      </Seg>
    </Wanted>
    <NotWanted>
      <V>x</V>
    </NotWanted>
    <NotWanted3>
    </NotWanted3>
    <MostWanted>
      <UniqueKey>1</UniqueKey>
      <QuoteNum>1</QuoteNum>
    </MostWanted>
    <NotWanted2>
      <UniqueKey>1</UniqueKey>
      <QuoteNum>1</QuoteNum>
    </NotWanted2>
    <NotWanted1>
      <UniqueKey>0002</UniqueKey>
    </NotWanted1>
    <Wanted>
      <Seg>
        <SegNum>3</SegNum>
      </Seg>
    </Wanted>
    <Wanted>
      <Seg>
        <SegNum>4</SegNum>
      </Seg>
    </Wanted>
    <NotWanted>
      <V>x</V>
    </NotWanted>
  </top>
</root>

1 Ответ

1 голос
/ 10 сентября 2010

Почему бы вам просто не использовать:

XName wanted = "Wanted";
XName mostWanted = "MostWanted";
var nodes = doc.Descendants()
               .Where(x => x.Name == wanted || x.Name == mostWanted);

, который будет извлекать каждый элемент с именем "Wanted" или "MostWanted".Из каждого из этих элементов вы можете перейти к дочерним элементам и т. Д.

Если это не то, что вам нужно, уточните свой вопрос.

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