Чтение больших XML-документов в .net
Мне нужно прочитать большой xml, используя .net файлы, которые могут быть легко размером в несколько ГБ.
Я пытался использовать XDocument, но при попытке загрузить документ просто бросает исключение System.OutOfMemoryException.
Каков наиболее эффективный способ чтения XML файлов большого размера?
Ответы
Ответ 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
Ответ 3
Вы можете попробовать использовать экземпляр XmlTextReader
.
http://msdn.microsoft.com/en-us/library/system.xml.xmltextreader.aspx