PugiXML и RapidXML не имеют интерфейсов, соответствующих DOM. Эти API имеют серьезные ограничения по функциональности и соответствию. Возможно, вы захотите изучить VTD-XML, который является значительно более продвинутым, чем DOM или SAX / Pull

ю по крайней мере три облегченных синтаксических анализатора C ++ XML:RapidXML, TinyXML а такжеPugiXML, Однако все три используют интерфейс на основе DOM (т. Е. Они создают свое собственное представление XML-документа в памяти, а затем предоставляют интерфейс для его обхода и управления). В большинстве ситуаций, с которыми мне приходится сталкиваться, я предпочитаю интерфейс SAX (где анализатор просто выплевывает поток событий, таких как start-of-tag, а код приложения отвечает за выполнение всего, что он хочет, основываясь на этих событиях). ,

Кто-нибудь может порекомендовать облегченную библиотеку C ++ XML с интерфейсом SAX?

Изменить: я должен также отметить библиотеку Microsoft XmlLite, котораяделает использовать интерфейс SAX (ну, на самом деле, интерфейс «тянуть», что, возможно, даже лучше). К сожалению, на данный момент это исключено для меня, поскольку, насколько я знаю, это закрытый исходный код и только Windows (пожалуйста, исправьте меня, если я ошибаюсь в этом).

 igagis29 авг. 2017 г., 17:41

Ответы на вопрос(3)

соответствующих DOM. Эти API имеют серьезные ограничения по функциональности и соответствию. Возможно, вы захотите изучить VTD-XML, который является значительно более продвинутым, чем DOM или SAX / Pull

http://die-xml.googlecode.com/ , кажется очень маленьким и простым в использовании

это недавно сделанный C ++ 0x XML SAX парсер с открытым исходным кодом, и автор желает обратной связи

он анализирует входной поток и генерирует события для обратных вызовов, совместимых с std :: function

стековая машина использует конечные автоматы в качестве бэкэнда, а некоторые события (начальный тег и текстовые узлы) используют итераторы, чтобы минимизировать буферизацию, делая ее довольно легкой

Решение Вопроса

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

 John Bartholomew14 янв. 2011 г., 00:46
Хорошо. Похоже, что экспат разумен, даже если я надену свою собственную оболочку C ++.
 Matthieu N.14 янв. 2011 г., 01:22
как насчет TinyXML и его оболочки C ++ TinyXML ++?
 John Bartholomew13 янв. 2011 г., 20:52
Должен признать, я не уделял экспату того внимания, которого он заслуживал. Вы используете его с оболочкой C ++? Если да, то какой?
 sbi14 янв. 2011 г., 00:40
@John: Мне потребовалось некоторое время, чтобы вспомнить, но когда я сделал это, я использовал это:beta.codeproject.com/KB/XML/expatimpl.aspx, Но это была только очень тонкая обертка, и теперь она серьезно устарела.
 sbi14 янв. 2011 г., 09:46
@ Мономер: я не знаю. Единственный парсер, который я когда-либо использовал (после просмотра нескольких из них много лет назад), был expat. Может быть, TinyXML так же хорошо или даже лучше. Я бы не знал.

Ваш ответ на вопрос