У меня есть XML документ, в котором мне нужно добавить и удалить некоторые узлы во время итерации. Но если я добавлю такие узлы, другие узлы будут смещены в зависимости от InsertAfter
или RemoveChild
. Так что xNode.ChildNodes[i]
будет указывать на неправильный узел. Конечно, я могу добавить или вычесть счетчик, но я думаю, что это не лучший способ. Как мне это сделать?
void Init()
{
XmlDocument doc = LoadDocument("test.xml");
RecursiveProcess(doc);
}
void RecursiveProcess(XmlNode xNode)
{
for(int i = 0; i < node.ChildNodes.Count; i++)
{
XmlElement node = xNode.ChildNodes[i] as XmlElement;
if(/*some condition*/)
{
var x = Document.CreateElement("newNode");
node.ParentNode.InsertAfter(x, node);
}
else if(...)
{
var x = Document.CreateElement("anotherNode");
node.ParentNode.RemoveChild(node);
}
RecursiveProcess(node);
}
}