作app的時候常常要用webview解析Html,若是是本身寫的服務器那麼富文本編輯框有可能選擇像KindEditor這樣的編輯器,在kindEditor添加圖片雖然能夠實現絕對路徑插入,若是說:html
<img alt="" src="http://58.192.23.75:8080/xiaoxiao2/uploads/artImage/image/20130711/20130711182603_176.png" />
java
可是這樣直接用絕對路徑很不合理,爲何?由於做爲服務器,ip地址或者域名可能會有變更,若是用絕對路徑的話,出現要變更ip的狀況,那麼原來服務器上的圖片就都不能用,或者須要大量的修改,一個合理的服務器須要能靈活的適應,因此就應該使用下面的地址:node
<img alt="" src="/xiaoxiao2/uploads/artImage/image/20130711/20130711182603_176.png" />
android
這樣高潮就來了,在android的webview控件裏面是顯示不了這樣的圖片的,怎麼辦?web
個人解決的方法就是在顯示以前把img標籤的src地址換成絕對地址,找了一下選擇了你們很推崇的Jsoup,(下載請自行解決)api
替換代碼以下:服務器
String newsBody="<img alt="" src="/xiaoxiao2/uploads/artImage/image/20130711/20130711182603_176.png" />";
public static String HTTPHOST="http://58.192.23.75:8080";
Document doc = Jsoup.parse(newsBody); Elements pngs = doc.select("img[src]"); for (Element element : pngs) { String imgUrl = element.attr("src"); if (imgUrl.trim().startsWith("/")) { imgUrl =HTTPHOST + imgUrl; element.attr("src", imgUrl); } } newsBody = doc.toString();
article_context.loadDataWithBaseURL(null, newsBody, "text/html", "utf-8", null);
根據jsoup指南里面有這樣一段教程:app
可使用屬性設置方法 Element.attr(String key, String value)
, 和 Elements.attr(String key, String value)
.編輯器
假如你須要修改一個元素的 class
屬性,可使用 Element.addClass(String className)
和Element.removeClass(String className)
方法。this
Elements
提供了批量操做元素屬性和class的方法,好比:要爲div中的每個a元素都添加一個rel="nofollow"
可使用以下方法:
doc.select("div.comments a").attr("rel", "nofollow");
與Element
中的其它方法同樣,attr
方法也是返回當 Element
(或在使用選擇器是返回 Elements
集合)。這樣可以很方便使用方法連用的書寫方式。好比:
doc.select("div.masthead").attr("title", "jsoup").addClass("round-box");
如需更多關於Jsoup 的用法,請訪問:
http://www.open-open.com/jsoup/