Подтвердить что ты не робот

Самый эффективный способ разбора Xml

В .NET Framework теперь есть (по крайней мере) четыре разных метода чтения строки Xml. Я использовал каждый из XmlDocument, XmlReader, XPath и XElement, но который наиболее эффективен для использования при кодировании или во время выполнения? Каждый из них предназначен для другой задачи, каковы плюсы и минусы?


Update: Использование XmlReader, по-видимому, является самым быстрым способом чтения xml, который звучит разумно для меня, но имеет ограничения. Я хотел бы знать, есть ли разница в производительности между XmlDocument и XLinq для доступа к xml не последовательно.


Update: Я нашел несколько сообщений, сравнивающих различные методы загрузки XML-документа. XmlReader является самым быстрым, существует незначительная разница между XmlDocument и LINQ to XML, пока вы не загрузите документ с 10 000+ node, где LINQ to XML выходит впереди.

4b9b3361

Ответ 1

Три наиболее распространенных метода для чтения:

XmlDocument Он считывает весь файл в древовидной структуре, доступ к которому можно получить с помощью XPath или путем просмотра всех узлов. Это требует большой памяти для очень большого файла, так как вся структура XML должна быть загружена в память. Очень хороший и простой в использовании для небольших файлов (менее нескольких мегабайт).

XmlReader Быстрая, но и настоящая боль, которую нужно использовать, поскольку она последовательна. Если вам когда-нибудь понадобится вернуться, вы не можете, и структура XML обычно очень подвержена дезорганизованным заказам. Кроме того, если вы читаете из бесконечного потока XML, это, вероятно, единственный способ пойти.

Сериализаторы XML Это в основном делает все для вас, вы предоставляете корневой объект своей модели, и он создает и читает XML для вас. Тем не менее, вы почти не контролируете структуру, и чтение старых версий вашего объекта - боль. Таким образом, это не будет работать очень хорошо для стойкости.

XDocument и LINQ to XML Как указал Даниэль Стрит. Но я не знаю этого достаточно, чтобы прокомментировать. Я предлагаю кому-либо отредактировать сообщение и добавить отсутствующую информацию.


Теперь писать - это еще одна история. Это боль для поддержки XmlDocument и XmlWriter - это легкий ветерок.

Я бы сказал, по моему опыту, что лучшим комбо является запись с использованием XmlWriter и чтение с использованием XmlDocument.

Ответ 2

Там также XDocument и LINQ to XML, которые я считаю наиболее эффективными, когда дело доходит до времени программиста.

Ответ 3

Самый быстрый из них будет XmlTextReader. Из MSDN:

"Представляет читателя, который обеспечивает быстрый, не кэшированный, прямой доступ доступ к данным XML."

Подробнее здесь: XmlTextReader Class

Хотя это действительно зависит от проблемы, чтобы решить, какой "метод" будет наиболее подходящим для использования. Если вам нужно прочитать XML файл только один раз (например: чтение и кеширование некоторых глобальных параметров приложения и т.д.), То победитель XmlTextReader. Но помните, что это читатель только для чтения. Если вам нужно искать/изменять все элементы XML, то вам, вероятно, следует использовать XmlDocument Class.