LINQ to XML递归删除元素 - C#

时间:2011-10-14 22:36:22

标签: c# linq linq-to-xml

我有以下XML:

<Root>
 <Section name="xyz" />
 <Section name="abc">
   <Section name="def" />
 </Section>
 <Section name="abc">
   <Section name="def">
     <Section name="xyz" />
     <Section name="abc" />
     <Section name="xyz">
       <Section name="xyz" />
     </Section>
  </Section>
</Section>
</Root>

我有XML的XDocument表示。我如何遍历树并删除所有元素abc

1 个答案:

答案 0 :(得分:6)

这很简单:)

doc.Descendants("Section")
   .Where(x => (string) x.Attribute("name") == "xyz")
   .Remove();

喜欢LINQ to XML ......

编辑:我刚刚用你的示例XML尝试过它,之后就是结果了:

<Root>
  <Section name="abc">
    <Section name="def" />
  </Section>
  <Section name="abc">
    <Section name="def">
      <Section name="abc" />
    </Section>
  </Section>
</Root>

如果那不是您的预期,请告诉我。