Tuve el mismo problema al querer pasar mensajes xml entre dispositivos integrados.
Escribí lo siguiente (todo en un archivo de encabezado) para ser una api rápida para analizar y generar xml. No es compatible con todas las características de XML, pero los mensajes XML más simples no necesitan de todos modos:
http://www.scottlangham.co.uk/2009/01/rapidxml-a-quick-xml-parsergenerator-for-c/
Hay uso de ejemplo que se muestra en los comentarios.
Para escribir XML que puede hacer algo como lo siguiente:
int isbn = 2938237;
wstring authorName = "Isaac Asimov";
wstring borrower = "Mr. Blobby";
CWTag bookTag = libraryTag(L"Book")
(L"author",authorName) (L"isbn",isbn) (L"borrower",borrower);
bookTag(L"Review") (L"comments", L"very good");
y esto da lugar a la nueva xml que se añade bajo la etiqueta:
<Book author="Isaac Asimov" isbn="2938237" borrower="Mr. Blobby">
<Review comments="very good"/>
</Book>
Nosotros probamos otra biblioteca, que pueda No recuerdo cuál, y descubrí que no fue lo suficientemente rápido. No queríamos pegarnos con el formato manual de las cadenas porque estábamos lidiando con muchos mensajes.
Estoy muy en desacuerdo. Crear el XML a mano es bastante propenso a errores (problemas de codificación, escape de caracteres), así que recomiendo crear un árbol (DOM o algo más) y luego serializarlo. – bortzmeyer
Oye, acabo de decir "Xerces es una exageración". El escape puede (y debe) ser manejado por una sola función o una biblioteca liviana como Genx: http://www.tbray.org/ongoing/genx/docs/Guide.html - Nemanja Trifunovic –