Существует ли эффективный элемент управления .Net Forms, который можно использовать для просмотра и редактирования большого XML (100 мг ++) - PullRequest
2 голосов
/ 19 августа 2011

Я работаю над приложением (C # .Net 2008), которое создает несколько больших XML-файлов размером около 100 мг. Я знаю, что в конечном итоге эти файлы должны быть меньше для эффективности, но, к сожалению, эти файлы должны быть непрерывными (1 файл). Я хотел бы включить возможность просматривать, редактировать и сохранять изменения в этих файлах после создания, но до сих пор не смог найти элемент управления формы вдоль строк richtextbox или дерева, который не зависает при загрузке этих файлов. Я потратил около 3 дней, но безуспешно пробовал разные средства управления и решения. Самое близкое, что я получил, - это использование Scintilla и следующее

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

Это позволило мне загрузить один из больших файлов, но когда я попытался обновить файл, у меня снова возникла проблема OutOfMemory.

Я знаю, что это можно сделать - TextPad - отличный пример, но я бы лучше использовал встроенный элемент управления.

1 Ответ

0 голосов
/ 23 августа 2011

Эта проблема возникает снова и снова с XML; и да, суть в том, что вы действительно не хотите иметь такие большие XML-файлы.

Вы можете самостоятельно реализовать строго текстовый редактор, который читает файл по разделам (как описано выше). Кроме того - если вы хотите иметь какое-то древовидное представление, то, боюсь, вы в значительной степени застряли с чтением и разбором всего файла заранее. Как вы указали, обновления будут самыми хитрыми. Общий подход, вероятно, будет заключаться в том, чтобы искать раздел в редактируемом файле и начинать с этого момента перезаписывать файл новым измененным разделом, а затем - все разделы, которые были изначально в файле после «текущий» раздел. Это все еще будет медленным, но вы не получите из памяти исключений.

.Net предоставляет XmlTextReader и XmlTextWriter , которые работают с потоками и проверяют правильность формирования XML. Это может быть лучшим способом чтения и записи ваших данных XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...