#c# #.net #xml #winforms
#c# #.net #xml #winforms
Вопрос:
В моей программе есть этот код, который фактически загружает файлы размером 500 МБ и выше.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(reader);
reader.Close();
Я получаю такого рода ошибку и не знаю, как решить проблему. Пожалуйста, пришлите мне несколько советов.
Комментарии:
1. Возможно, вам потребуется переключиться на анализатор XML на основе потока.
2. И / или переключиться на фактическую загрузку XML-файлов меньшего размера.
3. @Matt можете ли вы показать мне несколько кодов о том, как это сделать?
Ответ №1:
Я бы использовал XmlReader
для разбора документа, предоставляя прямой доступ только к данным и хорошо очищая себя в памяти — конечно, это может быть намного сложнее без удобства XmlDocument
класса.
Этот простой пример начнется с чтения файла построчно, предоставляя XmlReader для каждой строки.
using (var rdr = XmlReader.Create(new StreamReader("File.xml")))
{
while (rdr.Read())
{
//do what you will with the line
}
}
Смотрите методы и свойства, доступные при использовании XmlReader, в свойствах XmlReader (MSDN)
Комментарии:
1. в дополнение к приведенным выше кодам у меня есть следующие: XmlTextReader myTextReader = новый XmlTextReader(txtFileName.Text); myTextReader. Обработка пробелов = WhitespaceHandling. Нет; while (myTextReader.Read()) { foreach (узел XmlNode в xmlDoc) { TreeNode TreeNode = XmlNode2TreeNode(myTextReader, myTextReader.p); TreeNode. Text = FormatName(узел); treeView1.Nodes. Добавить (TreeNode); } }
2. добавлен элементарный пример для ответа, mingzcky.
Ответ №2:
вам нужно что-то вроде SAX, но для .NET.
http://sourceforge.net/projects/saxdotnet / или XmlReader, в основном анализатор на основе потока.
HTH