Я ищу простой, чистый, правильный XML-синтаксис для использования в моем проекте на С++. Должен ли я писать свой собственный?
Как насчет RapidXML? RapidXML - очень быстрый и маленький XML-анализатор DOM, написанный на С++. Он ориентирован прежде всего на встроенные среды, компьютерные игры или любые другие приложения, в которых доступная память или процессорная мощность процессора достигают больших премий. RapidXML лицензируется в соответствии с лицензией на программное обеспечение Boost и его исходный код свободно доступен.
Функции
Ограничения
Источник: wikipedia.org://Rapidxml
В зависимости от использования вы можете использовать привязку данных XML? CodeSynthesis XSD - это компилятор привязки XML-данных для С++, разработанный Code Synthesis и имеющий двойную лицензию под GNU GPL и патентованная лицензия. Учитывая спецификацию экземпляра XML (XML Schema), он генерирует классы С++, которые представляют данный словарь, а также код синтаксического анализа и сериализации.
Одной из уникальных особенностей CodeSynthesis XSD является поддержка двух разных сопоставлений XML-схемы и С++: встроенный С++/Tree и поточно-ориентированный С++/Parser. Отображение С++/Tree является традиционным сопоставлением с древовидной структурой данных в памяти. С++/Parser - это новое SAX-подобное сопоставление, которое представляет информацию, хранящуюся в документах экземпляра XML, как иерархию событий синтаксического анализа, специфичных для словаря. По сравнению с С++/Tree, сопоставление С++/Parser позволяет обрабатывать большие XML-документы, которые не поместились бы в памяти, выполнять поточно-ориентированную обработку или использовать существующее представление в памяти.
Источник: wikipedia.org://CodeSynthesis XSD
pugixml - Легкий, простой и быстрый XML-синтаксический анализатор для С++ Очень маленький (сравнимый с RapidXML), очень быстрый (сравнимый с RapidXML), очень прост в использовании ( лучше, чем RapidXML).
Попробуйте TinyXML.
TiCPP является "более С++" версией TinyXML.
'TiCPP' сокращен для официального названия TinyXML ++. Это совершенно новый интерфейс для TinyXML (http://www.grinninglizard.com/tinyxml/), который использует МНОГИЕ сильных сторон С++. Шаблоны, исключения и намного лучшая обработка ошибок. Он также полностью документирован в doxygen. Это действительно здорово, потому что эта версия позволяет вам взаимодействовать с крошечным точно так же, как и раньше, или вы можете использовать новые классы "ticpp". Все, что вам нужно сделать, это определить TIXML_USE_TICPP. Он был протестирован в VC 6.0, VC 7.0, VC 7.1, VC 8.0, MinGW gcc 3.4.5 и в Linux GNU gcc 3 +
попробуйте следующее:
http://www.applied-mathematics.net/tools/xmlParser.html
это проще и быстрее, чем RapidXML или PUGXML.
TinyXML - худший из "простого анализатора".
Не используйте TinyXML, если вас беспокоит эффективность/управление памятью (он имеет тенденцию выделять множество крошечных блоков). Мой личный фаворит RapidXML.
Как насчет gSOAP? Он является открытым исходным кодом и свободно доступен под лицензией GPL. Несмотря на свое название, набор инструментов gSOAP является универсальным инструментом привязки данных XML и позволяет автоматически связывать ваши данные C и С++ с XML. Нет необходимости использовать XML-парсер API, просто дайте ему возможность читать/записывать ваши данные в формате XML для вас. Если вам действительно нужен суперпростой С++ XML-парсер, то gSOAP может быть излишним. Но для всего остального он хорошо зарекомендовал себя во многих промышленных приложениях, поскольку gSOAP был представлен в 2001 году.
Вот краткий список возможностей:
Например:
class Address
{ std::string name;
std::vector<LONG64> number;
time_t date;
};
Затем запустите "soapcpp2" в объявлении класса Address
выше, чтобы сгенерировать читатели и писатели XML soap_read_Address
и soap_write_Address
, например:
Address *a = new Address();
a = ...;
soap ctx = soap_new();
soap_write_Address(ctx, a);
soap_end(ctx);
soap_free(ctx);
Это создает XML-представление объекта Address a
. Аннотируя декларации файла заголовка с данными пространства имен XML (не показаны здесь), инструменты также генерируют схемы. Это простой пример. Инструменты gSOAP могут обрабатывать очень широкий диапазон типов данных C и С++, включая связанные с указателем структуры и даже (циклические) графики (а не только деревья).
Надеюсь, что это поможет.
Я являюсь С++ новичком и, попробовав пару разных предложений на этой странице, я должен сказать, что мне нравится pugixml самый. У этого есть легкая для понимания документация и API высокого уровня, который был все, что я искал.
TinyXML может быть лучше всего для простой работы с XML, но если вам нужно больше возможностей, попробуйте Xerces из проекта apache. Перейдите на следующую страницу, чтобы узнать больше о ее возможностях.
TinyXML, а также Boost.PropertyTree. Последний не отвечает всем официальным требованиям, но очень прост.
Boost.PropertyTree
идеально подходит для моего простого хранения данных. Это страница, которая дала понять, как ее использовать. Вау, я люблю повышение.
Мне нравится Gnome xml parser. Это открытый исходный код (лицензия MIT, поэтому вы можете использовать ее в коммерческих продуктах), быстро и имеет интерфейсы на основе DOM и SAX.