C# 是否有一个efficint.NETForms控件可用于查看和编辑大型xml(100meg++)

C# 是否有一个efficint.NETForms控件可用于查看和编辑大型xml(100meg++),c#,winforms,C#,Winforms,我正在开发一个C.NET2008应用程序,它可以创建一些大约100兆字节的大型XML文件。我知道,最后这些文件应该保持较小的效率,但不幸的是,这些文件需要连续1个文件。我希望能够在创建后查看、编辑和保存对这些文件所做的更改,但到目前为止,还无法找到一个与richtextbox或treeview类似的表单控件,这些控件在加载这些文件时不会挂起。我花了大约3天时间尝试不同的控制和解决方案,但都没有成功。我最近使用的是斯金特拉和以下软件 using (TextReader reader = new S

我正在开发一个C.NET2008应用程序,它可以创建一些大约100兆字节的大型XML文件。我知道,最后这些文件应该保持较小的效率,但不幸的是,这些文件需要连续1个文件。我希望能够在创建后查看、编辑和保存对这些文件所做的更改,但到目前为止,还无法找到一个与richtextbox或treeview类似的表单控件,这些控件在加载这些文件时不会挂起。我花了大约3天时间尝试不同的控制和解决方案,但都没有成功。我最近使用的是斯金特拉和以下软件

using (TextReader reader = new StreamReader(myFilePath, Encoding.UTF8)) 
{scintillaDocument.Text = reader.ReadToEnd(); } 
这允许我加载一个大文件,但当我尝试刷新文件时,又出现了OutOfMemory问题


我知道这是可以做到的——TextPad是一个很好的例子,但我宁愿使用嵌入式控件。

这个问题在XML中一再出现;是的,底线是您并不真的想要拥有如此大的XML文件

您可以自己实现一个严格基于文本的编辑器,该编辑器按上述部分读取文件。旁白——如果您想要某种类似treeview的表示,那么我担心您将不得不提前读取和解析整个文件。正如您所指出的,更新将是最棘手的。通常的方法可能是查找正在编辑的文件中的节,并从该点开始用新修改的节覆盖文件,然后从该点开始,覆盖当前节之后文件中原来的所有节。这仍然很慢,但不会出现内存不足异常


.Net提供了and,它处理流,并检查XML是否格式正确。这可能是读写XML数据的最佳方式。

这个问题在XML中反复出现;是的,底线是您并不真的想要拥有如此大的XML文件

您可以自己实现一个严格基于文本的编辑器,该编辑器按上述部分读取文件。旁白——如果您想要某种类似treeview的表示,那么我担心您将不得不提前读取和解析整个文件。正如您所指出的,更新将是最棘手的。通常的方法可能是查找正在编辑的文件中的节,并从该点开始用新修改的节覆盖文件,然后从该点开始,覆盖当前节之后文件中原来的所有节。这仍然很慢,但不会出现内存不足异常


.Net提供了and,它处理流,并检查XML是否格式正确。这可能是读取和写入XML数据的最佳方式。

我建议分部分读取文件,而不是一次全部读取。分部分读取文件可以查看,但如果进行了编辑并且用户希望保存,是否不需要保存整个文件才能将其保存为格式良好的XML?我问是因为我不知道。我对使用xml比较陌生,我认为出现内存不足异常的原因不在于读写文件,而在于显示文件。因此,只显示文件的一部分可能会有所帮助。您是在尝试重新设计纯文本编辑器,还是需要实际导航XML子树并折叠它们?为什么需要编辑如此大的XML文件?如果您的应用程序编辑了XML表示的数据,这不是更好吗?您认为编辑的工作流程是什么?分块编辑或某些搜索功能是否有效?我建议分部分阅读文件,而不是一次全部阅读。分部分阅读文件可以查看,但如果进行了编辑且用户希望保存,则整个文件是否不需要保存在那里,以便将其保存为格式良好的XML?我问是因为我不知道。我对使用xml比较陌生,我认为出现内存不足异常的原因不在于读写文件,而在于显示文件。因此,只显示文件的一部分可能会有所帮助。您是在尝试重新设计纯文本编辑器,还是需要实际导航XML子树并折叠它们?为什么需要编辑如此大的XML文件?如果您的应用程序编辑了XML表示的数据,这不是更好吗?您认为编辑的工作流程是什么?分块编辑或某些搜索功能是否有效?