Dot-Net

從現有 XDocument 創建新 XDocument

  • December 20, 2012

我有一個將 XDocument 對像作為參數的函式。

我需要遍歷不同集合中的許多其他對象,並且對於這些對像中的每一個,在 XDocument 上執行一些操作。但是 lopp 的每次迭代都需要原始 XDocument 的原始副本,該副本傳遞給函式。

但是,如果我只是嘗試對傳遞給函式的變數執行我的操作,它的行為就像一個指針 - 所以循環的每次迭代都會接收 XDocument,它在最後一次迭代結束時處於任何狀態,這在全部。

顯然,我需要製作 Xdocument 的副本,但我看不到這樣做的直接方法。試:

XDocument currentServerXml = XDocumentFromFunction.Document():

然後使用 currentServerXml 而不是 XDocumentFromFunction 讓我得到具有相同指針和相同行為的相同副本。

如何為循環的每次迭代創建一個全新的數據副本?

您正在尋找採用 XDocument 的 XDocument建構子。這將創建傳遞的 XDocument 的深層副本。

範常式式碼:

var foo_original = XDocument.Load("foo.xml");
var foo_copy1 = new XDocument(foo_original);
var foo_copy2 = new XDocument(foo_original);

將 XDocument 保存到流並從該流載入另一個實例。

編輯:您可以實現一個擴展方法“CreateCopy()”,它可以封裝該解決方案,因此您可以獲得您所請求的易於使用的解決方案。

引用自:https://stackoverflow.com/questions/4745516