2015-03-23 25 views
12

Tôi đang gặp khó khăn với HTML chuỗi hiển thị trong Android WebView. Về phía server, tôi đã tải về một trang web và thoát khỏi nhân vật HTML và dấu ngoặc kép (tôi đã sử dụng Python):Không thể hiển thị chuỗi HTML

my_string = html.escape(my_string, True) 

Về phía khách hàng Android: chuỗi được unescaped bởi:

myString = StringEscapeUtils.unescapeHtml4(myString) 
webview.loadData(myString, "text/html", "encoding"); 

Tuy nhiên webview chỉ hiển thị chúng dưới dạng chuỗi chữ. Dưới đây là kết quả: enter image description here

Edit: Tôi thêm chuỗi ban đầu trở về từ phía máy chủ:

"& lt; DOCTYPE html & gt; & lt; html lang = & quot; en &! quot; & gt; & lt; đầu & gt; & lt; meta charset = & quot; utf-8 & quot; & gt; & lt; meta http-equiv = & quot; Tương thích X-UA & quot; content = & quot; IE = edge & quot; & gt; & lt; meta tên = & quot; chế độ xem & quot; content = & quot; width = device-width, quy mô ban đầu = 1.0 & quot; & gt; & lt; meta tên = & quot; mô tả & quot; content = & quot; & quot; & gt; & lt; tiêu đề & gt; Saulify & lt;/title & gt; & lt;! - Tất cả các Favicons ... - & gt; & lt; liên kết rel = & quot; phím tắt biểu tượng & quot; href = & quot; /static/favicon/favicon.ico & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 57x57 & quot; href = & quot; /static/favicon/apple-touch-icon-57x57.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 114x114 & quot; href = & quot; /static/favicon/apple-touch-icon-114x114.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 72x72 & quot; href = & quot;/static/favicon/apple-touch-icon-72x72.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 144x144 & quot; href = & quot; /static/favicon/apple-touch-icon-144x144.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 60x60 & quot; href = & quot; /static/favicon/apple-touch-icon-60x60.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 120x120 & quot; href = & quot; /static/favicon/apple-touch-icon-120x120.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 76x76 & quot; href = & quot; /static/favicon/apple-touch-icon-76x76.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 152x152 & quot; href = & quot; /static/favicon/apple-touch-icon-152x152.png & quot; & gt; & lt; liên kết rel = & quot; apple-touch-icon & quot; kích thước = & quot; 180x180 & quot; href = & quot; /static/favicon/apple-touch-icon-180x180.png & quot; & gt; & lt; liên kết rel = & quot; biểu tượng & quot; type = & quot; hình ảnh/png & quot; href = & quot; /static/favicon/favicon-192x192.png & quot; kích thước = & quot; 192x192 & quot; & gt; & lt; liên kết rel = & quot; biểu tượng & quot; loại = & quot; hình ảnh/png & quot; href = & quot; /static/favicon/favicon-160x160.png & quot; kích thước = & quot; 160x160 & quot; & gt; & lt; liên kết rel = & quot; biểu tượng & quot; loại = & quot; hình ảnh/png & quot; href = & quot;/static/favicon/favicon-96x96.png & quot; kích thước = & quot; 96x96 & quot; & gt; & lt; liên kết rel = & quot; biểu tượng & quot; loại = & quot; hình ảnh/png & quot; href = & quot; /static/favicon/favicon-16x16.png & quot; kích thước = & quot; 16x16 & quot; & gt; & lt; liên kết rel = & quot; biểu tượng & quot; loại = & quot; hình ảnh/png & quot; href = & quot; /static/favicon/favicon-32x32.png & quot; kích thước = & quot; 32x32 & quot; & gt; & lt; meta tên = & quot; msapplication-TileColor & quot; content = & quot; # da532c & quot; & gt; & lt; meta tên = & quot; msapplication-TileImage & quot; content = & quot; /static/favicon/mstile-144x144.png & quot; & gt; & lt; meta name = & quot; msapplication-config & quot; content = & quot; /static/favicon/browserconfig.xml & quot; & gt; & lt;! - CSS bên ngoài - & gt; & lt; liên kết rel = & quot; biểu định kiểu & quot; href = & quot; https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> & lt;! - Phông chữ bên ngoài - & gt; & lt; liên kết href = & quot; // maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css & quot; rel = & quot; biểu định kiểu & quot; & gt; & lt; liên kết href = & # x27; // fonts.googleapis.com/css?family=Open+Sans:300,600 & # x27; rel = & # x27; biểu định kiểu & # x27; type = & # x27; văn bản/css & # x27; & gt; & lt; link href = & # x27; // fonts.googleapis.com/css?family=Lora:400,700 & # x27; rel = & # x27; biểu định kiểu & # x27; type = & # x27; văn bản/css & # x27; & gt; & lt;! - [nếu lt IE 9] & gt; & lt; script src = & quot; // cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js & quot; & gt; & lt;/script & gt; & lt; script src = & quot; // cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js & quot; & gt; & lt;/script & gt; & lt;! [Endif] - & gt; & lt;! - Trang web CSS - & gt; & lt; liên kết rel = & quot; biểu định kiểu & quot; type = & quot; văn bản/css & quot; href = & quot; /static/css/style.css & quot; & gt; & lt; liên kết rel = & quot; biểu định kiểu & quot; gõ = & quot; văn bản/css & quot; href = & quot; /static/css/glyphicon.css & quot; & gt; & lt;/head & gt; & lt; body & gt; & lt; div class = & quot; trang chứa bài viết & quot; & gt; & lt; div class = & quot; hàng & quot; & gt; & lt; div lớp = & quot; col-md-8 col-md-offset-2 & quot; & gt; & lt; h2 & gt; & lt; a href = & quot; http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">Gov. Jerry Brown nói Ted Cruz là & amp; # 39; Hoàn toàn Unfit & amp; # 39; Để chạy vì văn phòng vì biến đổi khí hậu Lượt xem & lt;/a & gt; & lt;/h2 & gt; & lt; h4 & gt; Sam Levine & lt;/h4 & gt; & lt; div class = & quot; article & quot; & gt; & lt; p & gt; California Chính phủ Jerry Brown (D) cho biết hôm Chủ nhật rằng Texas Sen. Ted Cruz (R-Texas) là & quot; hoàn toàn không phù hợp để hoạt động cho văn phòng & quot; vì vị trí của ông về biến đổi khí hậu. & lt;/p & gt; & lt; p & gt; & quot; Tôi vừa trở về từ New Hampshire, nơi có & # x27; tuyết và băng ở khắp mọi nơi. Quan điểm của tôi về điều này rất đơn giản: Các cuộc tranh luận về vấn đề này phải tuân theo khoa học và phải theo dõi dữ liệu và nhiều người trong số của các nhà báo động về sự nóng lên toàn cầu, họ gặp vấn đề vì khoa học doesn & # x27; t back them up, & quot; Cruz & lt; a href = & quot; https://www.youtube.com/watch?v=m0UJ_Sc0Udk">said</a> trên & quot; Đêm khuya với Seth Meyers & quot; cuối cùng tuần. & lt;/p & gt; & lt; p & gt; Để sao lưu khiếu nại của mình, Cruz trích dẫn dữ liệu vệ tinh đã cho thấy sự thiếu ấm đáng kể trên trong 17 năm qua.Nhưng Cruz & # x27; s lý do & lt; a href = & quot; http://www.politifact.com/truth-o-meter/statements/2015/mar/20 /ted-cruz/ted-cruzs-thế giới-lửa-không-kéo-17 năm/& quot; & gt; có được Politifact gỡ bỏ & lt;/a & gt ;, cho thấy rằng các nhà khoa học có bằng chứng dồi dào để tin rằng khí hậu sẽ tiếp tục làm ấm. & lt;/p & gt; & lt; p & gt; & quot; Những gì anh ta nói là hoàn toàn sai, ”Brown nói trên & lt; a href = & quot; http://www.nbcnews.com/meet-the-press/california-governor-ted-cruz- unfit-be-running-n328046 & quot; & gt; NBC & # x27; s & quot; Gặp gỡ Báo chí. & quot; & lt;/a & gt; Anh ấy thêm rằng & lt; a href = & quot; http://climate.nasa.gov/scientific-consensus/">over 90 phần trăm & lt;/a & gt; các nhà khoa học nghiên cứu khí hậu đồng ý rằng biến đổi khí hậu là do hoạt động của con người gây ra. & quot; Người đàn ông đó betokens mức độ vô minh như vậy và một sự giả mạo trực tiếp của dữ liệu khoa học hiện có. Nó & # x27; s gây sốc, và tôi nghĩ rằng người đàn ông đã cho thấy mình hoàn toàn không thích hợp để chạy cho văn phòng , & quot; Brown nói. & lt;/p & gt; & lt; p & gt; Nâu thêm rằng biến đổi khí hậu có & lt; a href = & quot; http://www.huffingtonpost.com/2015/03/06/california-drought-february- record_n_6820704.html? Utm_hp_ref = california-hạn chế & quot; & gt; gây ra hạn hán ở trạng thái của mình & lt;/a & gt ;, cũng như các cơn bão nặng và trên bờ biển phía đông. & lt;/p & gt; & lt; p & gt; Trong khi Cruz có thể đã thấy tuyết và băng ở khắp mọi nơi ở New Hampshire, dữ liệu cho thấy rằng đất nước đang thực sự trải qua một & lt; một href = & quot; http://www.huffingtonpost.com/2015/02/19/cold-weather- winter_n_6713104.html & quot; & gt; ấm hơn trung bình & lt;/a & gt; mùa đông. & lt;/p & gt; & lt; p & gt; Chỉ trích của Brown về Cruz đến một ngày trước ngày thượng nghị sĩ Texas được thiết lập để thông báo & lt; a href = & quot; http://www.huffingtonpost.com/2015/03/22 /ted-cruz-2016_n_6917824.html & quot; & gt; tổng thống chiến dịch & lt;/a & gt ;.& lt;/p & gt; & lt;/div & gt; & lt; div class = & quot; gốc & quot; & gt; & lt; a href = & quot; http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">VIEW ORIGINAL & lt;/a & gt; & lt;/div & gt; & lt;/div & gt; & lt;/div & gt; & lt;/div & gt; & lt; script src = & quot; // code.jquery.com/jquery-latest.js & quot; & gt; & lt;/script & gt; & lt; script src = & quot; /static/js/modal.js & quot; & gt; & lt;/script & gt; & lt; script src = & quot; /static/js/bootbox.min.js & quot; & gt; & lt;/script & gt; & lt; script src = & quot; /static/js/site.js & quot; & gt; & lt;/script & gt; & lt; script & gt; (hàm (i, s, o, g, r, a, m) {i [& # x27; GoogleAnalyticsObject & # x27;] = r; i [r] = i [r] || function() { (i [r] .q = i [r] .q || []). đẩy (đối số)}, i [r] .l = 1 * new Ngày(); a = s.createElement (o), m = s.getElementsByTagName (o) [0]; a.async = 1; a.src = g; m.parentNode.insertBefore (a, m) }) (cửa sổ, tài liệu, & # x27; script & # x27 ;, & # x27; // www.google-analytics.com/analytics.js & # x27 ;, & # x27; ga & # x27;); ga (& # x27; tạo & # x27 ;, & # x27; UA-56.257.533-1 & # x27 ;, & # x27; auto & # x27;); ga (& # x27; gửi & # x27 ;, & # x27; pageview & # x27;); & lt;/script & gt; & lt;/body & gt; & lt;/html & gt;"

Trả lời

5

tôi đã sửa đổi mã ở đây:

public class test extends Activity { 
private WebView wv; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.test); 
    wv = (WebView) findViewById(R.id.wv); 
    String s = "<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="description" content=""> <title>Saulify</title> <!-- All the Favicons... --> <link rel="shortcut icon" href="/static/favicon/favicon.ico"> <link rel="apple-touch-icon" sizes="57x57" href="/static/favicon/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="114x114" href="/static/favicon/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="72x72" href="/static/favicon/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="144x144" href="/static/favicon/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="60x60" href="/static/favicon/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="120x120" href="/static/favicon/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="76x76" href="/static/favicon/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="152x152" href="/static/favicon/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="/static/favicon/apple-touch-icon-180x180.png"> <link rel="icon" type="image/png" href="/static/favicon/favicon-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="/static/favicon/favicon-160x160.png" sizes="160x160"> <link rel="icon" type="image/png" href="/static/favicon/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="/static/favicon/favicon-16x16.png" sizes="16x16"> <link rel="icon" type="image/png" href="/static/favicon/favicon-32x32.png" sizes="32x32"> <meta name="msapplication-TileColor" content="#da532c"> <meta name="msapplication-TileImage" content="/static/favicon/mstile-144x144.png"> <meta name="msapplication-config" content="/static/favicon/browserconfig.xml"> <!-- External CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css"> <!-- External Fonts --> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet"> <link href='//fonts.googleapis.com/css?family=Open+Sans:300,600' rel='stylesheet' type='text/css'> <link href='//fonts.googleapis.com/css?family=Lora:400,700' rel='stylesheet' type='text/css'> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> <!-- Site CSS --> <link rel="stylesheet" type="text/css" href="/static/css/style.css"> <link rel="stylesheet" type="text/css" href="/static/css/glyphicon.css"> </head> <body> <div class="container article-page"> <div class="row"> <div class="col-md-8 col-md-offset-2"> <h2><a href="http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">Gov. Jerry Brown Says Ted Cruz Is 'Absolutely Unfit' To Run For Office Because Of Climate Change Views</a></h2> <h4>Sam Levine</h4> <div class="article"> <p>California Gov. Jerry Brown (D) said on Sunday that Texas Sen. Ted Cruz (R-Texas) is "absolutely unfit to be running for office" because of his position on climate change.</p> <p>"I just came back from New Hampshire, where there's snow and ice everywhere. My view on this is simple: Debates on this should follow science and should follow data, and many of the alarmists on global warming, they have a problem because the science doesn't back them up," Cruz <a href="https://www.youtube.com/watch?v=m0UJ_Sc0Udk">said</a> on "Late Night with Seth Meyers" last week.</p> <p>To back up his claim, Cruz cited satellite data that has shown a lack of significant warming over the last 17 years. But Cruz's reasoning <a href="http://www.politifact.com/truth-o-meter/statements/2015/mar/20 /ted-cruz/ted-cruzs-worlds-fire-not-last-17-years/">has been debunked by Politifact</a>, which has shown that scientists have ample evidence to believe that the climate will continue to warm.</p> <p>"What he said is absolutely false,” Brown said on <a href="http://www.nbcnews.com/meet-the-press/california-governor-ted-cruz- unfit-be-running-n328046">NBC's "Meet the Press."</a> He added that <a href="http://climate.nasa.gov/scientific-consensus/">over 90 percent</a> of scientists who study the climate agree that climate change is caused by human activity. "That man betokens such a level of ignorance and a direct falsification of existing scientific data. It's shocking, and I think that man has rendered himself absolutely unfit to be running for office," Brown said.</p> <p>Brown added that climate change has <a href="http://www.huffingtonpost.com/2015/03/06/california-drought-february- record_n_6820704.html?utm_hp_ref=california-drought">caused droughts in his state</a>, as well as severe cold and storms on the east coast.</p> <p>While Cruz may have seen snow and ice everywhere in New Hampshire, data shows that the country is actually experiencing a <a href="http://www.huffingtonpost.com/2015/02/19/cold-weather- winter_n_6713104.html">warmer than average</a> winter.</p> <p>Brown’s criticism of Cruz comes one day before the Texas senator is set to announce a <a href="http://www.huffingtonpost.com/2015/03/22 /ted-cruz-2016_n_6917824.html">presidential campaign</a>. </p> </div> <div class="original"> <a href="http://www.huffingtonpost.com/2015/03/22/ted-cruz-climate-change_n_6919002.html">VIEW ORIGINAL</a> </div> </div> </div> </div> <script src="//code.jquery.com/jquery-latest.js"></script> <script src="/static/js/modal.js"></script> <script src="/static/js/bootbox.min.js"></script> <script src="/static/js/site.js"></script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-56257533-1', 'auto'); ga('send', 'pageview'); </script> </body> </html>"; 


    wv.loadData(stripHtml(s), "text/html", "UTF-8"); 

} 

public String stripHtml(String html) { 
    return Html.fromHtml(html).toString(); 
} 

}

enter image description here

1

Hãy thử điều này:

wv = (WebView) findViewById(R.id.wv); 
String s = "You HTML string"; 
wv.loadData(stripHtml(s), "text/html", "UTF-8"); 

public String stripHtml(String html) { 
    return Html.fromHtml(html).toString(); 
} 
Các vấn đề liên quan