【发布时间】:2015-11-12 03:48:00
【问题描述】:
我正在尝试删除类型为“可删除”的每个注释,但在它达到 1 个可删除后,foreach 停止。在这种情况下,只通过 test2.exe 和 test.exe。
这是我的 XML 文件的样子:
<folder name="bin">
<file name="test2.exe" type="undeletable">test</file>
<file name="test.exe" type="deletable">test</file>
<file name="test1.exe" type="deletable">test</file>
<file name="kernel.sys" type="undeletable">test</file>
</folder>
这是 C#:
XmlNodeList fileNodeLIst = fileNode.SelectNodes("file");
foreach(XmlNode file in fileNodeLIst) {
if (file.Attributes["type"].Value == "undeletable") {
TerminalSystemAddMessage("Error: Unable to delete " + file.Attributes["name"].Value);
} else if (file.Attributes["type"].Value == "deletable") {
file.ParentNode.RemoveChild(file);
TerminalSystemAddMessage("Deleted: " + file.Attributes["name"].Value);
}
}
我做错了吗? 为什么 foreach 循环会中断,我该如何解决?
【问题讨论】:
-
修改你的代码以便我可以实际运行它,我发现它工作得很好。请提供可靠地重现问题的a good, minimal, complete code example。
-
我发布的内容运行不正常。当可删除对象通过时,它会停止 foreach。
-
我不怀疑在您的场景中它无法运行。否则你不会发布这个问题。但是您没有提供 任何其他人 可以不加修改地运行的代码示例。没有它,你的代码有什么问题就不清楚了。我在不修改您发布的代码的情况下复制/粘贴,但当然必须添加其他代码才能让任何东西运行。当我这样做时,结果很好。请阅读并理解我提供的链接,以便您知道需要什么样的代码示例。