C#Linq XML从文档中提取节点

时间:2010-09-10 16:28:34

标签: c# .net xml linq linq-to-xml

我正在尝试使用Linq XML来选择一些节点和子节点,但却变得非常困惑!

在下面的示例XML中,我需要提取所有< MostWanted>和所有想要的子节点,但在Mostwanted和Wanted节点之间没有其他节点。

这是因为每个MostWanted都可以跟随任意数量的Wanted和Wanted与前面的Mostwanted相关。

我甚至混淆了自己打字!!!“

我怎样才能在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 个答案:

答案 0 :(得分:1)

为什么不使用:

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

这将检索名为“Wanted”或“MostWanted”的每个元素。从每个元素中,您都可以访问子元素等。

如果这不是您所追求的,请澄清您的问题。