『壹』 如何在java中實現自動生成html
創建一個StringBuilder對象,通過append方法來為其添加html語句。
StringBuilder sb = new StringBuilder();
Properties fileProperties = getProperties("file");
Properties sqlProperties = getProperties("sql");
PrintStream printStream = new PrintStream(new FileOutputStream(
"report.html"));
sb.append("<html>");
sb.append("<head>");
sb.append("<title>每日運營報表</title>");
sb.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />");
sb.append("<style type=\"text/css\">");
sb.append("TABLE{border-collapse:collapse;border-left:solid 1 #000000; border-top:solid 1 #000000;padding:5px;}");
sb.append("TH{border-right:solid 1 #000000;border-bottom:solid 1 #000000;}");
sb.append("TD{font:normal;border-right:solid 1 #000000;border-bottom:solid 1 #000000;}");
sb.append("</style></head>");
sb.append("<body bgcolor=\"#FFF8DC\">");
sb.append("<div align=\"center\">");
sb.append("<br/>");
sb.append("<br/>");
List<Map<String, Object>> result1 = getRpt(sqlProperties
.getProperty("sql1"));
for (Map.Entry<String, Object> m : result1.get(0).entrySet()) {
sb.append(fileProperties.getProperty("file1"));
sb.append(m.getValue());
}
sb.append("<br/><br/>");
輸出
sb.append("</div></body></html>");
printStream.println(sb.toString());
『貳』 java中幾種解析html的工具
HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:
1.Jsoup
Jsoup是一個集強大和便利於一體的HTML解析工具。它方便的地方是,可以用於支持用jQuery中css selector的方式選取元素,這對於熟悉js的開發者來說基本沒有學習成本。
String content = "blabla";
Document doc = JSoup.parse(content);
Elements links = doc.select("a[href]");
Jsoup還支持白名單過濾機制,對於網站防止XSS攻擊也是很好的。
2.HtmlParser
HtmlParser的功能比較完備,也挺靈活,但談不上方便。這個項目很久沒有維護了,最新版本是2.1。HtmlParser的核心元素是Node,對應一個HTML標簽,支持getChildren()等樹狀遍歷方式。HtmlParser另外一個核心元素是NodeFilter,通過實現NodeFilter介面,可以對頁面元素進行篩選。這里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 實現簡易爬蟲。
3.Apache tika
tika是專為抽取而生的工具,還支持pdf、Zip甚至是JavaClass。使用tika分析HTML,需要自己定義一個抽取內容的Handler並繼承org.xml.sax.helpers.DefaultHandler,解析方式就是xml標準的方式。crawler4j中就使用了tika作為解析工具。SAX這種流式的解析方式對於分析大文件很有用,我個人倒是認為對於解析html意義不是很大。
4.HtmlCleaner與XPath
HtmlCleaner最大的優點是:支持XPath的方式選取元素。XPath是一門在XML中查找信息的語言,也可以用於抽取HTML元素。XPath與CSS Selector大部分功能都是重合的,但是CSS Selector專門針對HTML,寫法更簡潔,而XPath則是通用的標准,可以精確到屬性值。XPath有一定的學習成本,但是對經常需要編寫爬蟲的人來說,這點投入絕對是值得的。
『叄』 腳本語言和java語言有什麼區別
腳本語言又被稱為擴建的語言,或者動態語言,是一種編程語言,用來控制軟體應用程序,腳本通常以文本(如ASCII)保存,只在被調用時進行解釋或編譯。
Java是一種可以撰寫跨平台應用程序的面向對象的程序設計語言。Java
技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。
腳本語言和Java語言的區別:
1、用腳本語言開發的程序在執行時,由其所對應的解釋器(或稱虛擬機)解釋執行。系統程序設計語言是被預先編譯成機器語言而執行的。腳本語言的主要特徵是:程序代碼即是腳本程序,亦是最終可執行文件。腳本語言可分為獨立型和嵌入型,獨立型腳本語言在其執行時完全依賴於解釋器,而嵌入型腳本語言通常在編程語言中(如C,C++,VB,Java等)被嵌入使用。
2、腳本語言是被解釋,而系統程序設計語言是被編譯。被解釋的語言由於沒有編譯時間而提供快速的轉換,通過允許用戶運行時編寫應用程序,而不需要耗時的編譯/打包過程。解釋器使應用程序更加靈活,腳本語言的代碼能夠被實時生成和執行。腳本語言通常都有簡單、易學、易用的特性,目的就是希望能讓程序設計師快速完成程序的編寫工作。
『肆』 java保存到html代碼
java保存到html代鄭啟碼的步驟如下:
1、創建一檔襲個字元串變數,該變數包含要保存為html的內容。
2、使用JavaIO庫中的FileWriter類創建一個新的文件,用於保存html代碼。
3、將喊蠢如html代碼寫入文件中。使用FileWriter類的write()方法將html代碼寫入文件中。
4、關閉文件。使用FileWriter類的close()方法關閉文件。
5、完成以上步驟後,就可以在Java程序中將字元串保存為html代碼了,需要注意的是,保存的文件格式必須是html,否則在瀏覽器中打開時會出現錯誤。
『伍』 如何在java中簡寫out.println輸出html元素
Stringhtml="<html><head><title>...</title></head><body>...</body></html>"
response.getWriter().println(html);
如果你覺得字元串這樣寫太長了,你也可以採用下面這種方法
StringBuilderhtml=newStringBuilder();
html.append("<html>");
html.append("<head>");
...
html.append("</html>");
response.getWriter().println(html.toString());
『陸』 java中html字元串如何完美轉換成pdf文件
1、首先導入itext的jar包,
然後直接上代碼
private static void versionsone(String htmlCode, String pdfPath){
Document document = new Document();
try{
StyleSheet st = new StyleSheet();
st.loadTagStyle("body", "leading", "16,0");
PdfWriter.getInstance(document, new FileOutputStream(pdfPath));
document.open();
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
Font FontChinese = new Font(bfChinese, 12, Font.NORMAL);
ArrayList<ArrayList> p = HTMLWorker.parseToList(dome_2(htmlCode), st);
for(int k=0;k<p.size();k++){
for(int m=0;m<p.get(k).size();m++){
Paragraph pCode = new Paragraph(p.get(k).get(m).toString(),FontChinese);
document.add(pCode);
}
}
}catch(Exception e){
e.printStackTrace();
}finally{
document.close();
}
}
private static Reader dome_2(String htmlCode){
if(htmlCode != null && !htmlCode.trim().equals("")){
try{
InputStream tInputStringStream = new ByteArrayInputStream(htmlCode.getBytes());
InputStreamReader isr = new InputStreamReader(tInputStringStream,"utf-8");
BufferedReader reader = new BufferedReader(isr);
return reader;
}catch(Exception e){
e.printStackTrace();
}
}
return null;
}
其實此處和別人的最大的不一樣的是,
ArrayList<ArrayList> p = HTMLWorker.parseToList(dome_2(htmlCode), st);
其實剛剛開始我在網上找來的代碼中是這樣寫的「ArrayList p = HTMLWorker.parseToList(dome_2(htmlCode), st);」
但後來我通過debug發現,ArrayList 裡面裝的還是一個集合,然後集合中放得才是真正不含html標簽的字元串。對於普通得文章,一般html標簽一般都是<p></p>
佔大多數。所以我直接用了兩層for循環直接從裡面取得我們想要的字元串。然後直接「Paragraph pCode = new Paragraph(p.get(k).get(m).toString(),FontChinese);」document.add(pCode);這樣就能解決中文問題了