2012-01-02 6 views
6

Duplicar posible:
C++ HTML template framework, templatizing library, HTML generator library¿Cuál es la mejor manera de producir resultados HTML en C++?

que tiene un programa, que contiene muchas mesas, así que quiero seguirles la pista en archivos de registro cuando depurar el programa. Quiero una salida en color con formato, así que pensé que la escribí en formato HTML. Entonces, ¿cuál es la mejor manera de crear archivos HTML en C++?

La forma trivial es tan desagradable y propenso a errores:

std::stringstream ret; 
ret << "<TABLE BORDER=\"1\" CELLBORDER=\"0\">\n"; 
ret << " <TR>\n"; 
... 

así que pensé que escribí un contenedor de HTML, pero creo que hay tantos por este motivo.

Quiero un contenedor de HTML estático de tipos en C++ con esta sintaxis o similar:

CHtmlHtml Html; 
Html << 
    Body() % Id("1") 
     << H1("My First Heading") << 
     << P("My first paragraph."); 

o en este caso

CHtmlTable table; 
table % Border(1) % CellBorder(0) << 
    Tr() << 
     Td("Text") % Colspan(4); 

¿Hay algún proyecto similar?

+2

@tzaman: Quiero una envoltura HTML estáticamente tipada, no una plantilla basada en –

+0

No estoy seguro de sus requisitos que descartan las plantillas, pero la respuesta tzaman dio una lista de un montón de soluciones útiles para C++, algunas no plantillas en todas. – casualcoder

+1

Revisé el enlace ofrecido y no pude ver nada, ni siquiera cerca de lo que está hablando el antidepresivo industrial. Casi todos provienen de plantillas HTML/XML. –

Respuesta

3

Tanto HTML como XML usan la misma sintaxis, por lo que podría utilizar una biblioteca XML de C++ (como TinyXML) para crear dinámicamente todos los nodos que necesita.

This page muestra cómo usar TinyXML para compilar documentos XML (o en su caso, HTML).

Es posible que tenga que hacer algunos ajustes (como eliminar la declaración XML en la parte superior del archivo generado), pero creo que podría crear un contenedor para ello de una manera más fácil.

+0

sí, puedo usar XML como base para mi contenedor, pero no quería escribir un contenedor. :) Pero parece que esta biblioteca contenedora no existe, así que escribiré una ... –

Cuestiones relacionadas