Đối với HTML đơn giản, hãy tạo trực tiếp dưới dạng văn bản. Các đề xuất khác về tuần tự hóa, XML và các phép biến đổi đều là quá mức cần thiết.
Có thư viện Java để giúp tạo ra HTML, như thế này:
- jwebutils
Một thư viện để tạo HTML 5 đánh dấu sử dụng Java. Nó cũng chứa hỗ trợ cho việc tạo đánh dấu JSON và CSS 3.
- Jakarta Element Construction Set (ECS)
API Java để tạo các phần tử cho các ngôn ngữ đánh dấu khác nhau trực tiếp hỗ trợ HTML 4.0 và XML. Bây giờ đã nghỉ hưu, nhưng một số người thực sự thích nó.
Nhưng nếu bạn tìm hiểu kiến thức cơ bản về HTML hợp lệ, bạn có thể viết thói quen của riêng bạn.
Về tốc độ, lớp StringBuilder được thêm vào nhằm mục đích thao tác chuỗi nhanh hơn. Sự cân bằng không đồng bộ hóa. Điều đó có nghĩa là không an toàn thread. Tùy thuộc vào cách chương trình của bạn được cấu trúc, bạn có thể sử dụng đồng bộ hóa xung quanh bên ngoài mã đang thực hiện hiển thị HTML.
Đây là một lớp mẫu mà tôi vừa mới nấu trong Java 6 và một ứng dụng nhỏ để chạy nó. Mã này chỉ là một bằng chứng về khái niệm, chưa sẵn sàng cho sản xuất thời gian chính.
package com.example;
/**
* @author Basil Bourque
* © 2012 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
*/
public class ListToHtmlTransformer {
/**
* @param collection
* of report titles.
* @return string containing source code for HTML5.
*/
public String render(java.util.Collection<String> reports) {
// This source code is not yet tested or made bullet-proof. Only meant for demonstrating concepts.
// Warning: This code is not thread-safe. Changes must be made before serious use.
// Warning: This code should be modified to produce proper HTML, such as escaping certain characters.
// This code generates minimal HTML5 as suggested here: http://www.brucelawson.co.uk/2010/a-minimal-html5-document/
// Big tip: Note that HTML allows the use of apostrophe (single-quote) in place of double-quote. Mixes better with Java source code.
// The backslash + 'n' is an escape sequence in Java to generate a linefeed (Ascii/Unicode 10) for use here as a NewLine.
// In real life, you woud test your rendered HTML with an HTML validator such as:
// • http://html5.validator.nu/
// • http://validator.w3.org/
StringBuilder html = new StringBuilder();
html.append("<!doctype html>\n");
html.append("<html lang='en'>\n");
html.append("<head>\n");
html.append("<meta charset='utf-8'>\n");
html.append("<title>Report of Reports</title>\n");
html.append("</head>\n\n");
html.append("<body>\n");
html.append("<h1>List of Reports</h1>\n");
// Make a list in HTML
html.append("<ul>\n");
// Loop the list of reports passed as argument.
for (String report : reports) {
html.append("<li>" + report + "</li>\n");
}
html.append("</ul>\n");
html.append("</body>\n\n");
html.append("</html>");
return html.toString();
}
}
Và một ứng dụng để chạy nó.
package com.example;
import java.util.ArrayList;
/**
*
* @author Basil Bourque
* © 2012 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so.
*/
public class App {
/**
* @param args
*/
public static void main(String[] args) {
ArrayList<String> listOfReports = new ArrayList<String>();
listOfReports.add("Some report #1");
listOfReports.add("Some report #2");
listOfReports.add("Some report #3");
listOfReports.add("Some report #4");
listOfReports.add("Some report #5");
listOfReports.add("Some report #6");
ListToHtmlTransformer renderer = new ListToHtmlTransformer();
String renderedHtml = renderer.render(listOfReports);
System.out.println("The following HTML was rendered: " + new java.util.Date().toString());
System.out.println(renderedHtml);
System.out.println("*** End of HTML ***");
}
}
Tôi đã cố gắng đăng HTML được hiển thị ở đây, nhưng StackOverflow cố gắng diễn giải nó dưới dạng HTML thay vì hiển thị nó.
Mẹo bổ sung: Bạn có thể sử dụng một trích dẫn (APOSTROPHE Unicode 39) thay vì báo giá kép (QUOTATION MARK Unicode 34) trong HTML & CSS để phân định các giá trị thuộc tính và như vậy. Trình duyệt xử lý tốt cả hai. Trích dẫn đơn giúp việc viết mã dễ dàng hơn nhiều trong mã Java của bạn, loại bỏ sự cần thiết phải thoát khỏi các dấu ngoặc kép. Lưu ý cách sử dụng của tôi trong mã ở trên, chẳng hạn như 'en'
và 'utf-8'
.
tất cả khách hàng có hỗ trợ chuyển đổi phía máy khách không? – radai
Không phải tất cả. Nhưng các trình duyệt web hiện đại làm - http://www.w3schools.com/XSL/xsl_browsers.asp –
Tôi đã nghĩ về việc sử dụng XSLT, bạn có biết cách đưa lệnh xử lý vào xml được tạo từ danh sách Báo cáo hay không chú thích với javax.xml.bind.annotation.XmlRootElement? – Marmoy