0
我想通过一个XML节点及其childNode
环路。虽然这样做,我试图检查如果dataList
包含childNode内部值,如果它不在列表中我删除父节点形式的XML。但我面临的问题是,在找到第一个条件之后,foreach
循环正在结束并且从顶部的for
循环开始统计。请在下面找到他的代码:
更新List<XmlNode> deletenode = new List<XmlNode>();
问题与Foreach循环,一旦找到第一个条件出来循环
for (int i = 0; i < xmlNodeList.Count; i++)
{
deletenode = new List<XmlNode>();
foreach (XmlNode node in xmlNodeList[i].ChildNodes)
{
if (node.Name == "testNode")
{
XmlNode delNode = node;
if (node.ChildNodes[0].Name.ToString() == "nodeName")
{
string[] childNodesplit = node.ChildNodes[0].InnerText.Split(',');
if (!dataList.Any(e => e.Equals(childNodesplit[0].ToString())))
{
delNode = node.ChildNodes[0].ParentNode;
deletenode.Add(delNode);
}
}
}
}
foreach (XmlNode nd in deletenode)
{
if (nd.Name == "testNode")
{
ElemList[i].RemoveChild(nd);
}
}
}
任何人都可以点错误,我很foreach循环中这样做,使回路的匹配一个条件,它不会comeout。 我更新了我的代码,但我无法将这些节点删除。
UPDATE
我现在得到了解决方案,我错过了将deletenode
列表作为每个循环的新列表。
我把它们保存在一个单独的'XmlNodeList'中。 – SDLBeginner
@SDLBeginner:你不必*,但这是可能的解决方案之一,是的。 – Tigran
我添加了我更新的代码,但我无法删除这些节点。 – SDLBeginner