我试图通过循环遍历xml文档中的特定节点。这是我尝试过的:
foreach (XmlNode node in doc.ChildNodes) {
if (node.Name == "EmbeddedResource" && node.Attributes["Include"].Value.Contains(".resx")) {
node.ParentNode.RemoveChild(node);
}
}
执行此代码时没有任何反应。也没有例外。我用谷歌搜索了一下,用SelectSingleNode
方法找到了一些解决方案,但它需要XPath作为输入参数,在我看来它太复杂了,因为我已经拥有了我想要的节点。这是它的样子(顺便说一下,我无法使它工作,因为我的XPath有问题):
parentNode.RemoveChild(parentNode.SelectSingleNode("//" + parentNode.Name + "/" + node.Name + "[@Include='" + node.Attributes["Include"].Value + "']"));
为什么这种方法表现得像这样? 有没有办法以不同的方式做到这一点?
谢谢是提前
答案 0 :(得分:1)
由于您正在迭代doc.ChildNodes,为什么不使用doc.RemoveChild(节点)?
此外,可能存在一个问题,即您在从列表中删除项目时迭代列表 - 我不知道C#将如何处理。例如,您可以在原始foreach中存储要删除的临时节点列表,然后遍历临时列表以从文档中删除项目。