簡體   English   中英

C#Linq XML從文檔中提取節點

[英]C# Linq XML pull out nodes from document

我正在嘗試使用Linq XML選擇多個節點和子節點,但感到困惑!

在下面的示例XML中,我需要提取所有<MostWanted>和所有Wanted及其子節點,但在Mostwanted和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>

您為什么不只使用:

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

這將檢索稱為“ Wanted”或“ MostWanted”的每個元素。 從這些元素的每一個中,您都可以找到子元素等。

如果這不是您要解決的問題,請澄清您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM