Недавно я рассмотрел несколько XML-библиотек специально для генерации XML-кода.
Резюме: я выбрал TinyXML++.
TinyXML++ имеет приличный синтаксис C++, построен на проверенных библиотеках TinyXML C, является бесплатным и открытым исходным кодом (MIT лицензия) и маленькие. Одним словом, помогает быстро выполнить работу. Вот краткий фрагмент:
Document doc;
Node* root(doc.InsertEndChild(Element("RootNode")));
Element measurements("measurements");
Element tbr("TotalBytesReceived", 12);
measurements.InsertEndChild(tbr);
root->InsertEndChild(measurements);
Что производит:
<RootNode>
<measurements>
<TotalBytesReceived>12</TotalBytesReceived>
</measurements>
</RootNode>
Я был очень доволен этим.
Я просмотрел многие другие; вот некоторые из лучших претендентов:
Xerces: король-папа. Делает все (особенно в сочетании с Xalan), но тяжеловесен и навязывает управление памятью пользователю.
RapidXML: отлично подходит для синтаксического анализа (это быстрый синтаксический анализатор), но не подходит для генерации, так как добавление узлов в DOM требует управления памятью.
Boost.XML (предложение): выглядит отлично - мощный, отличный синтаксис C++. Однако он еще не прошел процесс проверки, не поддерживается, и интерфейс вполне может измениться. Во всяком случае, почти использовал его. С нетерпением жду его принятия в Boost.
Libxml(++): очень хорошо; мощный, достойный синтаксис. Но это слишком много, если все, что вы делаете, это генерируете XML и привязаны к библиотеке glibmm (для usstring). Если бы мы были только на Linux (как вы?), я бы серьезно задумался.
XiMOL: уникальная потоковая библиотека. Это было слишком упрощенно для наших нужд, но для базовой генерации XML вы можете найти это весьма полезным. Синтаксис потока довольно опрятен.
Надеюсь, там есть что-то полезное!
person
MattyT
schedule
19.11.2008