我试图循环一个xml节点及其childNode.虽然这样做我试图检查是否dataList包含childNode内部值,如果它不在List中我将删除父节点形成xml.但我面临的问题是,在找到第一个条件后,foreach循环结束,并从顶部for循环开始统计.请在下面找到他的代码:
更新
List<XmlNode> deletenode = new List<XmlNode>();
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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以指出我在foreach循环中所做的错误,因此它不会在匹配一个条件时出现循环.我更新了我的代码,但我无法删除这些节点.
更新
我现在得到了解决方案,我错过了将deletenode列表作为每个循环的新列表.
您删除节点的父节点,您在循环中运行的子节点.
delNode = node.ChildNodes[0].ParentNode; //PARENT !
xmlNodeList[i].RemoveChild(delNode); //REMOVE
Run Code Online (Sandbox Code Playgroud)
如果必须删除它们,您可能会:
将它们保存到单独的列表中
在函数的末尾迭代该列表并逐个删除其中的所有节点
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |