2012-01-02 6 views
6

Eventuali duplicati:
C++ HTML template framework, templatizing library, HTML generator libraryQual è il modo migliore per produrre output HTML in C++?

Ho un programma, che contiene molte tabelle, quindi voglio rintracciarli nei file di log quando il debug del programma. Voglio stampe colorate e formattate, quindi ho pensato di averlo scritto in formato HTML. Quindi qual è il modo migliore per creare file HTML in C++?

Il modo più banale è così disgustoso e soggetto a errori:

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

così ho pensato che ho scritto un wrapper HTML ma penso che ci sono così tanti per questo motivo.

Voglio un wrapper HTML digitato in modo statico in C++ con questa sintassi o simile:

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

o in questo caso

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

Esiste un progetto simile?

+2

@tzaman: Voglio un wrapper HTML tipizzato staticamente, non uno basato su modello –

+0

Non sono chiaro i requisiti che escludono i modelli, ma la risposta tzaman ha fornito un sacco di soluzioni utili per C++, alcuni modelli non in tutti. – casualcoder

+1

Ho controllato il link offerto e non ho visto nulla di simile a ciò che sta parlando di antidepressivo industriale. Praticamente tutti provengono da modelli HTML/XML. –

risposta

3

HTML e XML utilizzano entrambi la stessa sintassi, quindi è possibile utilizzare solo una libreria XML C++ (come TinyXML) per creare dinamicamente tutti i nodi necessari.

This page mostra come usare TinyXML per creare documenti XML (o nel tuo caso, HTML).

Potrebbe essere necessario fare qualche giochino (come la rimozione della dichiarazione XML nella parte superiore del file generato), ma penso che potresti creare un wrapper per esso in qualche modo facilmente.

+0

sì, posso usare XML per una base per il mio wrapper, ma non volevo scrivere un wrapper. :) Ma sembra che questa libreria di wrapper non esiste, quindi scriverò una ... –

Problemi correlati