簡體   English   中英

使用 Linq 有條件地刪除 XML 文檔的部分

[英]Conditionally remove sections of XML document with Linq

我將如何使用 Linq 刪除其元素<CC>不具有值 0123 的所有<CCInfo>部分?

源文件:

<Processing>
  <Mods>
    <ListMods>
      <Action>A</Action>
      <GetMoreInd></GetMoreInd>
      <QLDNameReq></QLDNameReq>
      <CCAry>
        <CCInfo>
          <CC>0123</CC>
          <Num>25</Num>
          <Cat></Cat>
          <DtRange></DtRange>
        </CCInfo>
        <CCInfo>
            <CC>456</CC>
            <Num>25</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
          <CCInfo>
            <CC>0123</CC>
            <Num>99</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
          <CCInfo>
            <CC>0123</CC>
            <Num>16</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
          <CCInfo>
            <CC>xyz</CC>
            <Num>16</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
        </CCAry>
      </ListMods>
  </Mods>
</Processing>

通緝 output

<Processing>
  <Mods>
    <ListMods>
      <Action>A</Action>
      <GetMoreInd></GetMoreInd>
      <QLDNameReq></QLDNameReq>
      <CCAry>
        <CCInfo>
          <CC>0123</CC>
          <Num>25</Num>
          <Cat></Cat>
          <DtRange></DtRange>
        </CCInfo>
          <CCInfo>
            <CC>0123</CC>
            <Num>99</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
          <CCInfo>
            <CC>0123</CC>
            <Num>16</Num>
            <Cat></Cat>
            <DtRange></DtRange>
          </CCInfo>
        </CCAry>
      </ListMods>
  </Mods>
</Processing>

謝謝

查詢CCInfo節點,將CC元素的值與您想要的值進行比較,然后調用XNode.Remove method

var query = xml.Descendants("CCInfo")
               .Where(e => e.Element("CC").Value != "0123");
query.Remove();
Console.WriteLine(xml);

暫無
暫無

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

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