Что является лучшим, открывают синтаксический анализатор XML для C++? [дубликат]

Вы также можете использовать решение Альфонса. И где вам нужно настоящее электронное письмо, вы можете установить текстовое поле для электронной почты, когда пользователь регистрируется, и вы можете сохранить его в своей базе данных, и вы можете использовать его.

241
задан peterh says reinstate Monica 1 October 2016 в 12:05
поделиться

11 ответов

Попробуйте TinyXML.

http://sourceforge.net/projects/tinyxml

41
ответ дан Rob 23 November 2019 в 03:16
поделиться

Как насчет RapidXML? RapidXML является очень быстрым и маленьким синтаксическим анализатором XML DOM, записанным в C++. Это нацелено, прежде всего, на встроенные среды, компьютерные игры или любые другие приложения, куда доступная память или вычислительная мощность ЦП прибывают в большом почете. RapidXML лицензируют в соответствии с Лицензией на программное обеспечение Повышения, и ее исходный код в свободном доступе.

Функции

  • скорость Парсинга (включая здание дерева DOM) приближающаяся скорость функции strlen, выполняемой на тех же данных.
  • На современном ЦП (по состоянию на 2008) пропускная способность синтаксического анализатора является приблизительно 1 миллиардом символов в секунду. Посмотрите раздел Performance в Руководстве Онлайн.
  • Небольшой объем потребляемой памяти кода и созданных деревьев DOM.
  • А реализация только для заголовков, упрощая процесс интеграции.
  • Простая лицензия, которая позволяет использование почти для любой цели, и коммерческой и некоммерческой, без любых обязательств.
  • Поддержки UTF-8 и частично UTF-16, кодировка UTF-32.
  • Портативный исходный код без зависимостей кроме очень маленького подмножества Библиотеки Стандарта C++.
  • Это подмножество является столь маленьким, что оно может быть легко эмулировано вручную, если использование стандартной библиотеки нежелательно.

Ограничения

  • синтаксический анализатор игнорирует объявления DOCTYPE.
  • нет никакой поддержки пространств имен XML.
  • синтаксический анализатор не проверяет на символьную законность.
  • интерфейс синтаксического анализатора не соответствует спецификации DOM.
  • синтаксический анализатор не проверяет на уникальность атрибута.

Источник: Википедия org://<час> Rapidxml

В зависимости от Вас использование, можно ли использовать Привязку Данных XML? CodeSynthesis XSD является Данными XML Обязательный компилятор для C++, разработанного Синтезом Кода и лицензируемого двойным образом под GNU GPL и собственная лицензия. Учитывая спецификацию экземпляра XML (XML-схема), это генерирует классы C++, которые представляют данный словарь, а также код сериализации и парсинг.

Одна из уникальных функций CodeSynthesis XSD является своей поддержкой двух различных XML-схем к отображениям C++: C++ в оперативной памяти / Древовидный и потоковый C++ / Синтаксический анализатор. C++ / Древовидное отображение является традиционным отображением с древовидной, структурой данных в оперативной памяти. C++ / Синтаксический анализатор является новым, подобным САКСОФОНУ отображением, которое представляет информацию, хранившую в документах экземпляра XML как иерархия определенных для словаря событий парсинга. По сравнению с C++ / Дерево, C++ / отображение Синтаксического анализатора позволяет обрабатывать большие XML-документы, которые не уместились бы в памяти, выполнили бы потоковую обработку или использовали бы существующее представление в оперативной памяти.

Источник: Википедия org://CodeSynthesis XSD

119
ответ дан jk. 23 November 2019 в 03:16
поделиться

TiCPP является "большим количеством C++" версия TinyXML.

'TiCPP' короток для официального названия TinyXML ++. Это - абсолютно новый интерфейс к TinyXML ( http://www.grinninglizard.com/tinyxml/ ), который использует МНОГИЕ преимущества C++. Шаблоны, исключения и намного лучшая обработка ошибок. Это также полностью документируется в 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 +

16
ответ дан Kasprzol 23 November 2019 в 03:16
поделиться

Не используйте TinyXML, если Вы обеспокоены эффективностью/управлением памятью (это имеет тенденцию выделять партии из крошечных блоков). Мой любимый RapidXML.

12
ответ дан yrp 23 November 2019 в 03:16
поделиться

TinyXML может быть лучшим для простой работы XML, но если Вам нужно больше функций, тогда пробуют Xerces из апачского проекта. Перейдите к следующей странице для чтения больше о ее функциях.

http://xerces.apache.org/xerces-c/

9
ответ дан Raminder 23 November 2019 в 03:16
поделиться

TinyXML, и также Повышение. PropertyTree. Последний не выполняет все официальные требования, но очень прост.

8
ответ дан Lev 23 November 2019 в 03:16
поделиться

Мне нравится Gnome xml синтаксический анализатор. Это - открытый исходный код (Лицензия MIT, таким образом, можно использовать его в коммерческих продуктах), быстро и имеет DOM и основанные на SAX интерфейсы.

http://xmlsoft.org/

7
ответ дан dicroce 23 November 2019 в 03:16
поделиться

Попробуйте TinyXML или IrrXML... Оба - легкие синтаксические анализаторы XML (я предложил бы, чтобы Вы использовали TinyXML, так или иначе).

2
ответ дан Prog 23 November 2019 в 03:16
поделиться

Как насчет gSOAP? Он с открытым исходным кодом и свободно доступен по лицензии GPL. Несмотря на свое название, инструментарий gSOAP является общим инструментом привязки данных XML и позволяет автоматически привязывать данные на C и C++ к XML. Нет необходимости использовать API парсер XML, просто позвольте ему читать/писать ваши данные в формате XML для вас. Если вам действительно нужен суперпростой XML-парсер для C++, то gSOAP может оказаться излишеством. Но для всего остального он работает хорошо, как показывают отзывы, для многих промышленных приложений с момента появления gSOAP в 2001 году.

Вот краткий список возможностей:

  • Портативность: Windows, Linux, Mac OS X, Unix, VxWorks, Symbian, Palm OS, WinCE и т.д.
  • Малый размер: 73 КБ кода и менее 2 КБ данных для реализации клиентского приложения веб-службы XML (без DOM для ограничения использования памяти).
  • Быстрота: не верьте тому, что утверждают другие инструменты, истинная скорость должна быть измерена с I/O. Для gSOAP это более 3000 сообщений XML в обе стороны по TCP/IP. Накладные расходы на разбор XML пренебрежимо малы, так как это простое линейное сканирование ввода/вывода, пока происходит (де)сериализация.
  • Поддержка XML: импорт/экспорт XML-схем (XSD), импорт/экспорт WSDL, пространства имен XML, канонизация XML, XML с вложениями (MIME), опциональное использование DOM, множество опций для создания XML с отступами, использование строк UTF8 и т.д.
  • Валидация XML: частичная и полная (опция)
  • Поддержка WS: WS-Security, WS-ReliableMessaging, WS-Addressing, WS-Policy, WS-SecurityPolicy и др.
  • Отладка: интегрированное управление памятью с обнаружением утечек, протоколирование.
  • API: не нужно изучать API, только инициализация контекста "мыльного" движка, затем использование интерфейса чтения/записи для ваших данных и уничтожение контекста "мыльного" движка.

Например:

class Address
{ 
  std::string name;
  std::vector<LONG64> number;
  time_t date;
};

Затем запустите "soapcpp2" на объявлении класса Address выше, чтобы создать soap_read_Address и soap_write_Address XML читателя и писателя, например:

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 и C++, включая связанные структуры на основе указателей и даже (циклические) графы (а не только деревья).

Надеюсь, это поможет.

10
ответ дан 23 November 2019 в 03:16
поделиться

pugixml - Легкий, простой и быстрый анализатор XML для C ++ Очень маленький (сравнимый с RapidXML), очень быстрый (сравнимый с RapidXML), очень простой в использовании ( лучше , чем RapidXML).

99
ответ дан 23 November 2019 в 03:16
поделиться

попробуйте этот: http://www.applied-mathematics.net/tools/xmlParser.html
это проще и быстрее, чем RapidXML или PUGXML.
TinyXML - худший из "простых парсеров".

14
ответ дан 23 November 2019 в 03:16
поделиться
Другие вопросы по тегам:

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