2012-01-02 37 views
6

thể trùng lặp:
C++ HTML template framework, templatizing library, HTML generator libraryCách tốt nhất để tạo đầu ra HTML trong C++ là gì?

tôi có một chương trình, có chứa nhiều bảng, vì vậy tôi muốn theo dõi chúng trong file log khi tôi gỡ lỗi chương trình. Tôi muốn màu, định dạng đầu ra vì vậy tôi nghĩ rằng tôi đã viết nó ở định dạng HTML. Vậy cách tốt nhất để tạo các tệp HTML trong C++ là gì?

Cách tầm thường rất kinh tởm và dễ bị lỗi:

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

Vì vậy, tôi nghĩ rằng tôi đã viết một wrapper HTML nhưng tôi nghĩ rằng có rất nhiều vì lý do này.

Tôi muốn có một wrapper HTML tĩnh đánh máy trong C++ với cú pháp này hoặc tương tự:

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

hoặc trong trường hợp này

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

Có bất kỳ dự án tương tự?

+2

@tzaman: Tôi muốn một trình bao bọc HTML được nhập tĩnh, không phải mẫu dựa trên một –

+0

Tôi không rõ ràng về các yêu cầu của bạn loại trừ các mẫu, nhưng câu trả lời đã đưa ra danh sách toàn bộ các giải pháp hữu ích cho C++, một số không phải mẫu tất cả các. – casualcoder

+1

Tôi đã kiểm tra liên kết được cung cấp và không thể nhìn thấy bất cứ điều gì ngay cả những gì mà công nghiệp-thuốc chống trầm cảm đang nói đến. Họ khá nhiều đến từ các mẫu HTML/XML. –

Trả lời

3

HTML và XML đều sử dụng cùng cú pháp, vì vậy bạn chỉ có thể sử dụng thư viện XML C++ (như TinyXML) để tự động tạo tất cả các nút bạn cần.

This page cho biết cách sử dụng TinyXML để xây dựng tài liệu XML (hoặc trong trường hợp của bạn, HTML).

Bạn có thể cần thực hiện một số thao tác (chẳng hạn như xóa khai báo XML ở đầu tệp được tạo), nhưng tôi nghĩ bạn có thể tạo trình bao bọc cho phần mềm một cách dễ dàng.

+0

có, tôi có thể sử dụng XML cho một cơ sở cho wrapper của tôi, nhưng tôi không muốn viết một wrapper ở tất cả. :) Nhưng trông giống như thư viện wrapper này không tồn tại, vì vậy tôi sẽ viết một ... –

Các vấn đề liên quan