排除儿童元素

时间:2014-08-12 09:07:34

标签: c# linq-to-xml

给出以下XML。

<SystemInfo ID="YY" Value="INNE">
    <NativeInfo>Data</NativeInfo>
</SystemInfo>
<SystemInfo ID="YY" Value="HUUE">
    <NativeInfo>Data</NativeInfo>
</SystemInfo>

我试图做一个简单的任务来获得这个结果:

<SystemInfo ID="YY" Value="INNE">
</SystemInfo>
<SystemInfo ID="YY" Value="HUUE">
</SystemInfo>

欢迎任何想法。尝试了使用Elements(),Descendants()和AncestorsAndSelf()的任何事情,没有运气,我转向社区:)

3 个答案:

答案 0 :(得分:1)

假设您可以使用XDocument

XDocument doc =
    XDocument.Parse(
        @"<Root>
              <SystemInfo ID=""YY"" Value=""INNE"">
                  <NativeInfo>Data</NativeInfo>
              </SystemInfo>
              <SystemInfo ID=""YY"" Value=""HUUE"">
                <NativeInfo>Data</NativeInfo>
              </SystemInfo>
          </Root>"
        );

doc.Descendants("SystemInfo").Elements().Remove();

我添加了一个仅用于测试的根元素。删除后,文档包含新结构,没有删除的子项:

<Root>
  <SystemInfo ID="YY" Value="INNE" />
  <SystemInfo ID="YY" Value="HUUE" />
</Root>

答案 1 :(得分:0)

试试这个:

 var xmlElements = myXmlDocument.Elements("SystemInfo");

 xmlElements.ToList().ForEach(x => x.RemoveNodes());

答案 2 :(得分:-1)

您可以尝试以下代码: -

 var xDoc = XDocument.Load("XMLFile1.xml");

                foreach (var elem in xDoc.Document.Descendants("SystemInfo"))
                {
                    elem.Descendants("NativeInfo").Remove();
                }