2011-08-18 32 views
2

我正在創建一些大約100megs的大型XML文件的應用程序(C#.Net 2008)。我知道最終這些文件應該保持較小的效率,但不幸的是這些文件需要連續(1個文件)。我想包括在創建後查看,編輯和保存對這些文件所做的更改的功能,但是迄今爲止無法找到一個表格控件,它不會在加載這些文件時掛起一個richtextbox或treeview的行。我花了大約3天的時間嘗試不同的控制和解決方案,但都沒有成功。我來最接近的是Scintilla的使用及以下是否有效.Net Forms控件可用於查看和編輯大型XML(100meg ++)

using (TextReader reader = new StreamReader(myFilePath, Encoding.UTF8)) 
{scintillaDocument.Text = reader.ReadToEnd(); } 

這讓我加載大文件中的一個,但是當我試圖刷新文件,我又得到了內存不足的問題。

我知道它可以做 - TextPad是一個很好的例子,但我寧願使用嵌入式控件。

+0

我寧願建議閱讀文件的部分,而不是一次讀所有文件。 – Jethro

+0

在部分中閱讀它可以查看,但如果進行編輯並且用戶希望保存,整個文件不需要在那裏以便將其保存爲良好的XML。我問,因爲我不知道。我相對較新的工作與xml –

+0

我認爲你得到內存不足異常的原因不是因爲讀寫文件,而是顯示它。所以,只顯示文件的一部分可能會有所幫助。 – svick

回答

0

這個問題一再出現在XML中;是的,底線是你並不想擁有如此大的XML文件。

您可以自己實現嚴格基於文本的編輯器,它可以按部分讀取文件(如上所述)。除此之外 - 如果你想擁有某種類似於樹狀圖的表示方式,那麼恐怕你幾乎無法預先讀取和解析整個文件。正如你所指出的,更新將是最棘手的。一般的做法可能是找到正在編輯的文件中的部分,然後從該點開始用新修改的部分覆蓋文件,從此開始,文件中原來在文件後面的所有部分「當前」部分。這仍然是緩慢的,但你不會發生內存異常。

.Net提供了XmlTextReaderXmlTextWriter,它們與流協同工作,並檢查XML格式是否正確。這可能是讀取和寫入XML數據的最佳方式。

相關問題