Какая библиотека XML наиболее часто используется для C ++? - PullRequest
2 голосов
/ 09 октября 2009

Я увидел несколько библиотек через быстрый поиск в Google. Какая вообще наиболее часто используемая реализация XML для C ++?

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

Редактировать: кроссплатформенность предпочтительнее, но чтобы ответить на вопрос, я программирую это в Linux.

Ответы [ 6 ]

7 голосов
/ 09 октября 2009

Посмотрите, поможет ли вам TinyXML

TinyXML - это простой, небольшой синтаксический анализатор C ++ XML, который можно легко интегрировать в другие программы.

3 голосов
/ 09 октября 2009

Есть несколько:

Xercers   Big    http://xerces.apache.org/xerces-c/  
expat     small  http://expat.sourceforge.net/

Мне нравится эмигрант. Но это абсолютно личное мнение.
Я использую его, потому что он маленький, и было просто написать оболочку C ++ для.

Xerces похож на полноценный парсер XML со всеми кнопками свистком. Но, следовательно, его использование несколько сложнее.

2 голосов
/ 09 октября 2009

Я бы порекомендовал не использовать XML.

Я знаю, что это вопрос мнения, но XML действительно загромождает информацию множеством тегов. Кроме того, несмотря на то, что он читается человеком, беспорядок фактически ухудшает читаемость (и я говорю это по опыту, поскольку у нас на данный момент есть 134 файла конфигурации XML ...). Кроме того, его довольно сложно читать из-за сочетания атрибутов и простого текста. Вы никогда не знаете, какой вам нужен.

Я бы порекомендовал использовать JSON, если вам нужен язык, в котором уже есть четко определенные парсеры.

Для анализа просто взгляните на json.org и у вас есть длинный список библиотек C ++.

1 голос
/ 09 октября 2009

Не совсем тот вопрос, который вы задали, но есть два основных варианта парсеров XML: SAX и DOM.

SAX-парсеры являются управляемыми событиями парсерами. Поскольку синтаксический анализатор видит различные элементы в документе XML (узел, свойства и т. Д.), Он анализирует определенную вами функцию или метод.

С другой стороны, анализаторы DOM анализируют весь XML-документ и возвращают древовидную структуру, которая представляет весь документ. Ваш код может затем просмотреть структуру в любом порядке, который он видит.

Синтаксические анализаторы SAX более эффективны в памяти, поскольку им не нужно представлять весь документ в памяти. С парсерами DOM легче работать, потому что вы не ограничены обработкой документа линейным способом.

0 голосов
/ 08 июня 2016

Библиотеки XML, которые я использовал и до сих пор использую:

Если вам не нужно использовать XML, я бы посоветовал этого не делать.

Я бы также не стал моделировать то, что вы читаете / пишете, как классы C ++, если вы не используете генератор кода.

Я бы также посмотрел на использование генерации «схемы в коде» для чтения / записи, хотя должен убедиться, что лицензия соответствует вашим действиям.

0 голосов
/ 08 июня 2016

Я настоятельно рекомендую pugixml

"pugixml - это библиотека обработки C ++ XML, которая состоит из DOM-подобного интерфейса с богатыми возможностями обхода / модификации, чрезвычайно быстрого синтаксического анализатора XML, который создает дерево DOM из файла / буфера XML, и XPath Реализация 1.0 для сложных управляемых данными запросов к дереву. Также доступна полная поддержка Unicode с вариантами интерфейса Unicode и преобразованиями между различными кодировками Unicode. "

Я протестировал несколько парсеров XML, в том числе несколько коммерческих, прежде чем выбрать и использовать pugixml в коммерческом продукте.

pugixml был не только самым быстрым (иногда в несколько раз быстрее) синтаксическим анализатором, но также обладал самым зрелым и дружественным API. Я очень рекомендую это. Это очень стабильный продукт! Я начал использовать его с версии 0.8. Сейчас это 1.7.

Большим бонусом в этом парсере является реализация XPath 1.0! Для любых более сложных запросов к дереву XPath - это функция от Бога!

DOM-подобный интерфейс с широкими возможностями обхода / модификации чрезвычайно полезен для работы с "тяжелыми" XML-файлами в реальной жизни.

Это маленький и быстрый парсер. Это хороший выбор для приложений iOS или Android, если вы не против связать код C ++.

Я также тестировал TinyXML. Он был не только медленнее, но и имел проблемы с моими файлами XML.

Тесты говорят о многом: http://pugixml.org/benchmark.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...