我試圖使用SetData
命令將XMLNode
設置到剪貼板。我得到OutOfMemoryException
。如何將XmlNode設置爲剪貼板?
如何使XMLNode
類可序列化,還是需要手動序列化每個節點,然後在Paste函數中反序列化?
複製功能:
Clipboard.SetData("XmlNode", ouritem);
粘貼功能:
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
我試圖使用SetData
命令將XMLNode
設置到剪貼板。我得到OutOfMemoryException
。如何將XmlNode設置爲剪貼板?
如何使XMLNode
類可序列化,還是需要手動序列化每個節點,然後在Paste函數中反序列化?
複製功能:
Clipboard.SetData("XmlNode", ouritem);
粘貼功能:
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
這可能是因爲XmlNode
對象的循環引用(例如,從節點到其父和背面)和引用各種其他數據導致OutOfMemoryException。
您可以將剪貼板上作爲一個字符串節點的XML,再後來重建它:
Clipboard.SetData("XmlNode", ouritem.OuterXml);
粘貼功能:
XmlDocument doc = new XmlDocument();
doc.LoadXml(Clipboard.GetData("XmlNode") as string);
XmlNode ournode = doc.DocumentElement;
當然,這樣的後果之一是,這會導致一個孤立的節點沒有關聯到文檔中包含它的所有其他節點。
謝謝,我用你的答案和答案在這裏:http://stackoverflow.com/questions/3019136/the-node-to-be-inserted-is-from-a-different-document-context完成我的問題 – Audio
到目前爲止您試過的是什麼?你能告訴我們一些代碼嗎? –
當然,我會更新帖子。 – Audio
可能是'XmlNode'對象的循環引用(例如從節點到它的父節點和後節)導致了OutOfMemoryException。如果您只是在剪貼板中放入'ouritem.OuterXml'(它是一個'string')呢? – JLRishe