是否可以从字符串中提取<img/>?

时间:2015-08-21 17:14:58

标签: android html string extract

我在RSSParser中有一个带有HTML代码的String变量,问题是我将这个字符串与webWiew一起使用,来自blogspot的RSS是一团糟,它显示的文本与图像处于同一级别,留下一个单词和其他文本之间的大空间。

我试图应用一个可行的css样式表,但由于html代码中的样式,图像保持不变。

图片有以下网址:

< a href="imageurl.jpg" imageanchor="1" style="clear:right; float:right; margin-bottom: 1em;<img src="imageurl.jpg"></img></a>

我只想拍摄那条线(因为所有图像都具有相同的结构)并将其放在文本上方。

我的WebView设置:

WebView wview=(WebView) findViewById(R.id.webView);
    wview.setWebViewClient(new WebViewClient());
    WebSettings settings = vista.getSettings();
    settings.setDefaultTextEncodingName("utf-8");
    wview.loadData(content, "text/html; charset=utf-8", null);

内容变量示例:

<div style="text-align:justify;">
<a href="http://image.jpg" imageanchor="1" style="clean:right; float:right; 
margin-bottom: 1em; margin-left:1em;"<img border="0" height="320" src="http://image.jpg" width="240" /></a>

FROM HERE TO END, IT'S JUST PLAIN TEXT. I replaced the URL from the image for one more "normal", the ones from blogspot are a mess.

感谢。

1 个答案:

答案 0 :(得分:0)

问题看起来像我怀疑的那样。 float: right;标记上的<a css是导致文本在图像周围包裹的原因。根据您的屏幕宽度,它会将图像放在文本旁边的右侧(如果屏幕很宽),或者使某些单词位于图像上方,而其他单词则位于图像上方(如果屏幕是粗/窄)。 / p>

如果您自己构建HTML,只需删除float: right;即可。但是,如果图像周围的HTML来自外部源,那么您将不得不尝试以某种方式对其进行修改。 由于float: right标签上的<a正确,您需要在样式表属性上提供!important以覆盖它,因为由于CSS规则,标签上的属性正确优先。

因此,您需要预处理html(在加载HTML之前删除代码中的所有浮点引用),提供一些自定义CSS,或者在呈现DOM之后编写一些javascript来更改DOM。如果您想使用javascript,如果您可以将javascript代码注入您的页面,则以下内容将起作用:

Array.prototype.slice.call(document.getElementsByTagName('a')).forEach(function(pTag) { pTag.style.float = 'none'; });