0
我正面臨xpath問題,我必須複製子節點到父節點,如果檢查此條件:IdchildNode = IdparentNode。Xpath複製和刪除節點
我的代碼:
string IDchildnode = "1492";
string xpathNodeToCopy = "/a:SL/a:Data/a:ChildNode[@id=\"" + IDchildnode + "\"]";
nodeToClone = doc.SelectSingleNode(xpathNodeToCopy, xnsm);
if (nodeToClone != null)
{
nodeToCopy = nodeToClone.Clone();
string xpathNodePlaceToCopy = "/a:SL/a:Sub/a:VolLevel/a:Bay/*/a:ParentNode[@lid=\"" + IDchildnode + "\"]";
XmlNodeList nodeList = doc.SelectNodes(xpathNodePlaceToCopy, xnsm);
if (nodeList != null)
{
for (int i = 0; i <= nodeList.Count; i++)
{
nodeList[i].AppendChild(nodeToCopy);
doc.Save(sourceFile);
}
}
}
,我不明白的現象發生,我把一個斷點在我的代碼和我並行檢查,如果我的XML文檔,我的列表中的每個元素都接收副本但:
第一個元素,孩子的副本完成了,我刷新了我的xml文檔,我看到孩子已被複制。 第二個元素,子元素也被複制,但是列表的第一個元素的子元素已被刪除。 第三個元素,該子項已被複制,但該列表的第二個元素的子項已被刪除。
等等
比如我在這裏的XML文檔的簡化圖,當迭代達到I = 1:
<ItemParent id="1492"></ItemParent>
<ItemParent id="1492">
<ItemChild id="1492"></ItemParent>
<ItemParent id="1492">
<ItemParent id="1492">
這裏你可以看到,我的孩子已經被複制第一ItemParent已被刪除。
我不明白爲什麼在每次迭代't'中,刪除itérération't-1'中複製的子項。特別是當我在每次迭代時用「doc.Save(sourceFile)」保存我的xml文檔。
謝謝。
謝謝Martin,你的答案現在可以正常工作! – AlexDG