C# 如何将XmlNode设置为剪贴板?
我正在尝试使用C# 如何将XmlNode设置为剪贴板?,c#,C#,我正在尝试使用SetData命令将XMLNode设置到剪贴板。我得到了OutOfMemoryException 如何使XMLNode类可序列化,还是需要手动序列化每个节点,然后在粘贴函数中反序列化 复制功能: Clipboard.SetData("XmlNode", ouritem); XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode; XmlDocument doc = new XmlDocument(); doc.Load
SetData
命令将XMLNode
设置到剪贴板。我得到了OutOfMemoryException
如何使XMLNode
类可序列化,还是需要手动序列化每个节点,然后在粘贴函数中反序列化
复制功能:
Clipboard.SetData("XmlNode", ouritem);
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
XmlDocument doc = new XmlDocument();
doc.LoadXml(Clipboard.GetData("XmlNode") as string);
XmlNode ournode = doc.DocumentElement;
粘贴功能:
Clipboard.SetData("XmlNode", ouritem);
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
XmlDocument doc = new XmlDocument();
doc.LoadXml(Clipboard.GetData("XmlNode") as string);
XmlNode ournode = doc.DocumentElement;
可能是
XmlNode
对象的循环引用(例如,从节点到其父节点,再到其父节点)和对各种其他数据的引用导致了OutOfMemoryException
您可以将节点的XML作为字符串放在剪贴板上,然后在以后重新组合:
Clipboard.SetData("XmlNode", ouritem.OuterXml);
粘贴功能:
Clipboard.SetData("XmlNode", ouritem);
XmlNode ournode = Clipboard.GetData("XmlNode") as XmlNode;
XmlDocument doc = new XmlDocument();
doc.LoadXml(Clipboard.GetData("XmlNode") as string);
XmlNode ournode = doc.DocumentElement;
当然,这样做的一个后果是,这将导致一个孤立的节点,而不与包含它的文档中的所有其他内容关联。到目前为止,您尝试了什么?你能给我们看一些代码吗?当然,我会更新这篇文章。可能是
XmlNode
对象的循环引用(例如从节点到其父节点和其后)导致了OutOfMemoryException。如果您只是将ouritem.OuterXml
(这是一个字符串
)放在剪贴板上会怎么样?这似乎很管用,当我将OuterXml粘贴为字符串时,我如何才能回溯到XMlNode?谢谢,我在这里使用了您的答案和答案:来完成我的问题