2011-04-10 32 views
7

我正在開發一個Android應用程序,該應用程序加載一個HTML頁面並在web視圖中顯示它。 問題是我想添加我的自定義CSS(加載的HTML沒有任何CSS或鏈接到CSS)。如何使用jsoup將自定義CSS添加到HTML代碼? 我無法修改html。 然後webview如何打開它? 謝謝用jsoup添加自定義CSS到html代碼

+0

這不是一個完全相同的問題。我無法使用loadDataWithBaseURL加載它,因爲沒有任何鏈接指向HTML中的ccs。所以我不能在本地應用中引用css。 – PixelPW 2011-04-13 18:37:04

回答

16

的幾種方法。您可以使用Element#append()將一些HTML添加到元素。

Document document = Jsoup.connect(url).get(); 
Element head = document.head(); 
head.append("<link rel=\"stylesheet\" href=\"http://example.com/your.css\">"); 

或者,使用Element#attr(name, value)向現有元素添加屬性。以下是一個例子,它將style="color:pink;"添加到所有鏈接。

Document document = Jsoup.connect(url).get(); 
Elements links = document.select("a"); 
links.attr("style", "color:pink;"); 

無論哪種方式,修改後得到最終的HTML字符串Document#html()

String html = document.html(); 

將其寫入文件PrintWriter#write()(使用正確的字符集)。

String charset = Jsoup.connect(url).response().charset(); 
// ... 
Writer writer = new PrintWriter("/file.html", charset); 
writer.write(html); 
writer.close(); 

最後在webview中打開它。由於我無法從頭頂部講述它,下面只是一個我認爲有幫助的示例鏈接:WebViewDemo.java。順便說一句,我在this blog上找到了鏈接(我依次通過Google找到該鏈接)。

+0

什麼是正確的字符集?我必須在那裏「// ...」? – PixelPW 2011-04-14 16:36:28

+0

正確的字符集是'Jsoup.connect(url).response()。charset();'。 '// ...'只是獲取'html'所需的代碼。 – BalusC 2011-04-14 16:39:06

+0

謝謝你,但是當我把這個日食它說:「添加拋出decleration」 ... 公共無效的主要(字符串參數... args)拋出 FileNotFoundException異常,UnsupportedEncodingException { 嘗試{ ...... 我有什麼去做? – PixelPW 2011-04-14 16:51:29

3

也許最簡單的方法是在將HTML文本加載到WebView之前,在HTML文本上進行搜索和替換以插入自定義樣式。我在我的應用程序BBC新聞中這樣做,稍微修改了新聞文章頁面。我的代碼如下所示:

text = text.replace("</head>", 
     "<style>h1 {font-size: x-large;} h1, div.date, div.storybody, img {margin:4px; padding:4px; line-height:1.25;}</style></head>"); 

看我怎麼尋找和最終head標籤(包括在替換段我自己</head>標籤更換這就保證了新片段雲在頁面右側的步伐。

1

AA有幾種方法,包括在HTML CCS

提斯我使用如果您有它保存爲一個外部文件:

<head><link rel="stylesheet" type="text/css" href="mystyle.css" /></head> 

如果你希望把它stight我的HTML文件:

<head> 
<style type="text/css"> 
hr {color:sienna;} 
p {margin-left:20px;} 
body {background-image:url("images/back40.gif");} 
</style> 
</head> 

或者,如果你wnat修改辛格運河標籤:

<p style="color:sienna;margin-left:20px">This is a paragraph.</p> 

* 編輯

的thees例子任何不該沒有任何問題顯示。

編號:W3 Schools CSS

+0

問題是我將HTML表單加載到網頁中,所以我無法更改HTML。我想用jsoup添加代碼,然後加載我自己的CSS。 – PixelPW 2011-04-10 21:33:33

+1

我明白了,你的問題聽起來像是誤導了你對html的控制。我編輯了這個問題,以正確的方式指出其他人。我自己沒有任何經驗。惠普jsoup – KilledKenny 2011-04-10 21:43:10

相關問題