Используя Повышение в чтение и XML-файлы записи

Я хотел бы добавить yourkit java и .net profiler. Я люблю его для Java, хотя и не пробовал .NET-версию.

69
задан Null 28 March 2016 в 19:52
поделиться

10 ответов

Вам следует попробовать pugixml Легкий, простой и быстрый XML-анализатор для C ++

Самая приятная вещь в pugixml - это поддержка XPath , которого нет в TinyXML и RapidXML.

Цитата автора RapidXML: «Я хотел бы поблагодарить Арсения Капулкина за его работу над pugixml, которая послужила источником вдохновения для этого проекта» и «на 5–30% быстрее, чем pugixml, самый быстрый анализатор XML. знает о "Он тестировал pugixml версии 0.3, которая недавно достигла версии 0.42.

Вот выдержка из документации pugixml:

Основными особенностями являются:

  • низкое потребление памяти и фрагментация (преимущество над pugxml составляет ~ 1,3 раза, TinyXML - ~ 2,5 раза, Xerces (DOM) - ~ 4,3 раза 1). Точные цифры можно увидеть в разделе Сравнение с существующими парсерами. UTF-16/32 (независимо от значения по умолчанию для std :: wstring и wchar_t))
  • полностью совместимый со стандартами код C ++ (одобрен в строгом режиме Comeau); библиотека мультиплатформенная (список платформ см. в справочнике)
  • высокая гибкость. Вы можете контролировать многие аспекты синтаксического анализа файлов и построения дерева DOM с помощью параметров синтаксического анализа.

Хорошо, спросите вы - в чем прикол? Все так мило - это маленькое, быстрое, надежное и чистое решение для синтаксического анализа XML. Чего не хватает? Хорошо, мы честные разработчики - так что вот список ошибок:

  • потребление памяти. Он превосходит все известные мне парсеры на основе DOM, но когда приходит парсер SAX, шансов нет. Вы не можете обработать XML-файл размером 2 ГБ с объемом памяти менее 4 ГБ - и сделать это быстро. Хотя pugixml ведет себя лучше, чем все другие парсеры на основе DOM, поэтому, если вы застряли с DOM, это не проблема.
  • потребление памяти. Хорошо, я повторяюсь. Еще раз. Когда другие синтаксические анализаторы позволяют вам предоставлять XML-файл в постоянном хранилище (или даже как область отображения памяти), pugixml этого не сделает. Поэтому вам придется копировать все данные в непостоянное хранилище. Более того, он должен сохраняться в течение всего времени жизни парсера (причины этого и больше о времени жизни написано ниже). Опять же, если вы в порядке с DOM - это не должно быть проблемой, потому что общее потребление памяти меньше (ну, хотя вам понадобится непрерывный кусок памяти, что может быть проблемой).
  • отсутствие проверка, обработка DTD, пространства имен XML, правильная обработка кодирования. Если они вам нужны - возьмите MSXML или XercesC или что-нибудь в этом роде.
63
ответ дан 24 November 2019 в 13:47
поделиться

Судя по моему опыту работы со списком рассылки Boost, кажется, что каждый раз, когда XML выступает в качестве темы, он переводится в обсуждение Unicode. Однако, поскольку прямо сейчас вырисовывается потенциальная библиотека Unicode, я не думаю, что для ее появления там потребуется много времени.

Тем временем я тоже использую TinyXML.

Интересная ссылка о RapidXML. Я посмотрю на это.

1
ответ дан 24 November 2019 в 13:47
поделиться

Если вы ищете только функциональность DOM, в этой теме уже есть несколько предложений. Я лично, вероятно, не стал бы беспокоиться о библиотеке, в которой отсутствует поддержка XPath, а в C ++ использовал бы Qt. Также есть TinyXPath, и Arabica утверждает, что поддерживает XPath, но я ничего не могу сказать по этому поводу.

2
ответ дан 24 November 2019 в 13:47
поделиться

Взгляните на Arabica

2
ответ дан 24 November 2019 в 13:47
поделиться

Boost не предоставляет атм парсера XML.

Poco XML (часть библиотек Poco C ++ ) хорош и прост.

4
ответ дан 24 November 2019 в 13:47
поделиться

Что ж, в boost нет специальной библиотеки для синтаксического анализа XML, но есть много альтернатив, вот пара: libxml , Ксерсес , Expat

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

А вот целая статья по теме от IBM.

4
ответ дан 24 November 2019 в 13:47
поделиться

Также есть TinyXML , красивая и небольшая библиотека C ++. Если вам нужна библиотека нижнего уровня, RapidXML - отличная отправная точка.

16
ответ дан 24 November 2019 в 13:47
поделиться

TinyXML , вероятно, будет хорошим выбором. Что касается Boost:

В репозитории Boost есть библиотека Property_Tree . Он был принят, но поддержки, похоже, в данный момент не хватает (EDIT: Property_Tree теперь является частью Boost , начиная с версии 1.41 , прочтите документацию относительно его XML).

Дэниел Наффер реализовал XML-анализатор для Boost Spirit.

23
ответ дан 24 November 2019 в 13:47
поделиться

Определенно используйте TinyXML * палец вверх *

3
ответ дан 24 November 2019 в 13:47
поделиться

Похоже, что сериализация Boost может читать из архивов и записывать в них XML, если этого достаточно для ваших целей.

Проще XML с Boost

4
ответ дан 24 November 2019 в 13:47
поделиться
Другие вопросы по тегам:

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