Каков наилучший способ проанализировать большой XML (размер 1 ГБ) в С#?

У меня есть 1GB XML файл и вы хотите его разобрать. Если я использую XML Textreader или XMLDocument, результат будет очень медленным и несколько раз зависает...

Ответ 1

Вам нужно будет реализовать пользовательскую логику с помощью xmlreader. xmlreader не загружает полный XML в память перед его использованием, что означает, что вы можете прочитать его из потока и обработать его как таковой.

Ответ 2

XmlDocument не представляется возможным в этом случае, поскольку он попытается сосать этот гигабайт в основную память. Я удивлен, что вы находите XmlTextReader слишком медленным. Вы пробовали что-то вроде следующего?

using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
{
     // use rdr to advance through the document.
}

Ответ 3

XMLTextreader не должен зависать, поскольку он основан на потоке и работает только на кусках данных.

Если он зависает, возможно, что вы делаете что-то неправильно при загрузке файла.

Ответ 4

Я не очень хорошо знаком с этой темой, но afaik классы XmlReader должны работать отлично для вашей конкретной проблемы. В конце концов, они оптимизированы именно для этого.