Скорость и синтаксический анализ XML в .NET - Сериализация против XML DOM против? - PullRequest
3 голосов
/ 28 мая 2009

Я делал анализ XML раньше, но никогда в массовом масштабе. Если я работаю со многими документами, похожими на этот формат:

<?xml version="1.0" ?>
<items comment="something...">
  <uid>6523453</uid>
  <uid>94593453</uid>
</items>

Какой самый быстрый способ разбора этих документов?
1) XML DOM
2) Сериализация XML - регидратация в объект .NET
3) Какой-то другой метод

UPDATE
Я забыл упомянуть, что в среднем будет около 8000 элементов uid.

Ответы [ 3 ]

3 голосов
/ 28 мая 2009

Использование XmlReader определенно будет самым быстрым методом, хотя вам, конечно, придется выполнять весь анализ вручную. Он читает напрямую из потока без кеширования, хотя использовать его не слишком удобно по сравнению с DOM.

Сравнение двух предложенных вами вариантов: сериализация должна быть быстрее, чем использование DOM, поскольку (я считаю) она не кэширует все дерево в памяти - она ​​также, безусловно, имеет более простой в использовании интерфейс, если вы нацелены выполнить сериализацию.

2 голосов
/ 28 мая 2009

Я бы сказал, что сериализация Xml была бы лучшей из обоих миров. Вы получаете простоту использования, а также хорошую скорость. Существуют некоторые дополнительные издержки при сериализации xml ... однако, если вы использовали XmlReader вручную, вы, по крайней мере, реплицируете, если не превзойдете, эти издержки самостоятельно, когда будете использовать этот считыватель для воссоздания графа объектов.

1 голос
/ 28 мая 2009

В зависимости от того, что вам нужно сделать с данными, XmlReader, упомянутый @Noldorin, будет вашим лучшим выбором для обработки стилевого стиля. Если вам нужен больший доступ в стиле ad-hoc к данным с использованием XPath и XPathDocument будет намного быстрее, чем необработанный XML-документ.

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

...