Подтвердить что ты не робот

Чтение больших XML-документов в .net

Мне нужно прочитать большой xml, используя .net файлы, которые могут быть легко размером в несколько ГБ.

Я пытался использовать XDocument, но при попытке загрузить документ просто бросает исключение System.OutOfMemoryException.

Каков наиболее эффективный способ чтения XML файлов большого размера?

4b9b3361

Ответ 1

В основном вы должны использовать здесь модель "тянуть" - XmlReader и друзей. Это позволит вам передавать документ, а не загружать его все в память за один раз.

Обратите внимание, что если вы знаете, что находитесь в начале элемента "достаточно маленький", вы можете создать XElement из XmlReader, рассмотрите это, используя славу LINQ to XML, а затем перейдите к следующему элементу.

Ответ 2

Следующая страница делает интересное чтение, предоставляя средства для хранения данных из файла XML без его загрузки в память. Это позволяет вам комбинировать скорость XmlReader с гибкостью Linq:

http://msdn.microsoft.com/en-us/library/bb387035.aspx

И довольно интересная статья, основанная на этом методе:

http://blogs.msdn.com/b/xmlteam/archive/2007/03/24/streaming-with-linq-to-xml-part-2.aspx