Раньше я занимался синтаксическим анализом XML, но никогда в массовом порядке. Если я работаю со многими документами, похожими на этот формат:
<?xml version="1.0" ?>
<items comment="something...">
<uid>6523453</uid>
<uid>94593453</uid>
</items>
Каков самый быстрый способ проанализировать эти документы?
1) XML DOM
2) XML-сериализация - преобразование в объект .NET
3) Другой метод
ОБНОВЛЕНИЕ
Я забыл упомянуть, что в среднем будет около 8000 элементов uid.
3 ответа
Использование XmlReader
определенно будет самым быстрым методом , хотя вам, конечно, придется делать весь синтаксический анализ вручную. Он читает напрямую из потока, ничего не кешируя, хотя его не слишком удобно использовать по сравнению с DOM.
Сравнивая два предложенных вами варианта: сериализация должна быть быстрее, чем использование DOM, поскольку (я считаю) она не кэширует все дерево в памяти - она также, безусловно, имеет более простой в использовании интерфейс, если вы специально нацелены на сериализацию. .
Я бы сказал, что сериализация Xml будет лучшим из обоих миров. Вы получаете простоту использования, а также хорошую скорость. Есть некоторые дополнительные накладные расходы с сериализацией xml ... однако, если вы использовали XmlReader вручную, вы, по крайней мере, реплицируете, если не превзойдете, эти накладные расходы самостоятельно, поскольку вы используете этот считыватель для воссоздания графа объекта.
В зависимости от того, что вам нужно делать с данными, XmlReader, упомянутый @Noldorin, является вашим лучшим выбором для обработки стилей потоковой передачи. Если вам нужно больше специального стиля, доступ к данным с использованием XPath и XPathDocument будет намного быстрее, чем необработанный XML-документ.
http://msdn.microsoft.com/en-us/library/eh3exdc4.aspx
Похожие вопросы
Новые вопросы
.net
НЕ используйте для вопросов о .NET Core - используйте вместо этого [.net-core]. .NET Framework - это программная среда, предназначенная главным образом для операционной системы Microsoft Windows. Он включает в себя реализацию библиотеки базовых классов, общеязыковой среды выполнения (обычно называемой CLR), общей системы типов (обычно называемой CTS) и динамической среды исполнения. Он поддерживает множество языков программирования, включая C #, VB.NET, F # и C ++ / CLI.