从XDocument中删除节点

Jak*_*ake 9 c# xml linq

这将从文档中删除所有元素:

        XDocument document = XDocument.Load(inputFile);
        foreach (XElement element in document.Elements())
        {
            element.Remove();
        }
        document.Save(outputFile);
Run Code Online (Sandbox Code Playgroud)

这没有任何影响:

        XDocument document = XDocument.Load(inputFile);
        foreach (XElement element in document.Elements())
        {
            //element.Remove();
            foreach (XElement child in element.Elements())
                child.Remove();
        }
        document.Save(outputFile);
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么吗?由于这些都是对XDocument中元素的引用,因此更改是否应该生效?还有其他方法我应该从XDocument中删除嵌套的子项吗?

谢谢!

Jak*_*ake 19

显然,当你迭代时element.Elements(),调用Remove()其中一个子节点导致枚举器yield break.迭代element.Elements().ToList()修复问题.