Что лучший способ состоит в том, чтобы проанализировать большой XML (размер 1 ГБ) в C#?

обновление: я забыл, что вы используете swig-шаблон. Вот мое предложение:

//backend :
const author = { /* author object */ };
author.keys = Object.keys(author).join(', ');
swig.renderFile('/path/to/template.html',{ author });

, а затем, поместите его в template.htm;

{{ author.subject }}
{{ author.keys }}
{% for element in author %}
   <li >
         {{element  }} 


  </li>
{% endfor %}
13
задан Kirill Kobelev 9 December 2016 в 02:13
поделиться

5 ответов

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

12
ответ дан 1 December 2019 в 20:58
поделиться

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

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

6
ответ дан 1 December 2019 в 20:58
поделиться

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

using (XmlTextReader rdr = new XmlTextReader("MyBigFile.txt"))
{
     // use rdr to advance through the document.
}
8
ответ дан 1 December 2019 в 20:58
поделиться

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

1
ответ дан 1 December 2019 в 20:58
поделиться

Я был бы точно так же, как для резервного копирования всех, кто продвигает XmlReader со сравнением производительности, которое я нашел:

http://www.nearinfinity.com/blogs/joe_ferner/performance_linq_to_sql_vs.html

1
ответ дан 1 December 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: