繁体   English   中英

遍历 XML 节点,添加和删除一些

[英]Iterate through XML nodes, add and remove some

我有一个 XML 文档,我需要在迭代时添加和删除一些节点。 但是,如果我添加这样的节点,其他节点将根据InsertAfterRemoveChild 所以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);
    }
}

我找到了解决办法。 我创建了两个队列

NodesToRemove = new Queue<OpenXmlElement>();
NodesToInsert = new Queue<Tuple<OpenXmlElement, OpenXmlElement, InsertMode>>();

在主文档处理之后,我遍历队列并执行添加/删除操作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM