Недавно я рассмотрел несколько библиотек 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 (для ustring). Если бы мы были только в Linux (как и вы?), Я бы серьезно подумал.
XiMOL : Уникальная потоковая библиотека. Это было слишком упрощенно для наших нужд, но для базового генерирования XML вы можете найти его весьма полезным. Синтаксис потока довольно аккуратный.
Надеюсь, что-то там пригодится!