Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将XmlNode设置为剪贴板?_C# - Fatal编程技术网

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?谢谢,我在这里使用了您的答案和答案:来完成我的问题