我尝试使用XMLNode
命令将SetData
设置为剪贴板。我得到了OutOfMemoryException
。
如何使XMLNode
类可序列化,或者我是否需要手动序列化每个节点然后在粘贴功能中反序列化?
复制功能:
Clipboard.SetData("XmlNode", ouritem);
粘贴功能:
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
答案 0 :(得分:1)
可能是XmlNode
对象的循环引用(例如从节点到其父节点和返回节点)以及对各种其他数据的引用都会导致OutOfMemoryException。
您可以将节点的XML作为字符串放在剪贴板上,然后再重新构建它:
Clipboard.SetData("XmlNode", ouritem.OuterXml);
粘贴功能:
XmlDocument doc = new XmlDocument();
doc.LoadXml(Clipboard.GetData("XmlNode") as string);
XmlNode ournode = doc.DocumentElement;
当然,这样做的一个结果是,这会导致一个孤立的节点,而不会与包含它的文档中的其他所有节点相关联。