У меня есть 1GB XML файл и вы хотите его разобрать. Если я использую XML Textreader или XMLDocument, результат будет очень медленным и несколько раз зависает...
Каков наилучший способ проанализировать большой XML (размер 1 ГБ) в С#?
Ответ 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 должны работать отлично для вашей конкретной проблемы. В конце концов, они оптимизированы именно для этого.
Ответ 5
Я бы просто хотел создать резервную копию всех, кто продвигает XmlReader с сопоставлением производительности, которое я нашел:
http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html