簡體   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