Read&;使用Java/android修改html img src值
我有一个Android程序,需要执行以下操作: 我有一个包含以下内容的HTML字符串:Read&;使用Java/android修改html img src值,java,android,html,html-parsing,Java,Android,Html,Html Parsing,我有一个Android程序,需要执行以下操作: 我有一个包含以下内容的HTML字符串: <img src="image.png" /> 现在我需要修改此标记,如下所示: 我能够做到作者所说的;我可以将图像转换为Base64 我这里的问题是我有html字符串,我需要解析字符串,读取图像src值,将图像数据转换为字节[],编码并重新修改html字符串,然后将其加载到webview中。 ie;最后,我的HTML内容将有以下行: <img src=\"data:image/jpe
<img src="image.png" />
现在我需要修改此标记,如下所示:
我能够做到作者所说的;我可以将图像转换为Base64
我这里的问题是我有html字符串,我需要解析字符串,读取图像src值,将图像数据转换为字节[],编码并重新修改html字符串,然后将其加载到webview中。
ie;最后,我的HTML内容将有以下行:
<img src=\"data:image/jpeg;base64," + image64 + "\" />
我可以使用什么Java技术来读取和修改HTML字符串?我需要在纯java中完成,而不是使用可用的库。
我的原始HTML文件是预定义的,因此我无法创建新的HTML,但我需要修改现有的HTML文件。
我尝试使用Html.fromHtml&override getDrawable(),但我不知道如何进一步修改Html字符串。您应该使用Pattern和Matcher对象以及正则表达式,例如:
public String renderHtml(String body) {
Pattern pattern = Pattern.compile("[<](/)?img[^>]*[>]");
Matcher matcher = pattern.matcher(body);
StringBuilder builder = new StringBuilder();
int i = 0;
while (matcher.find()) {
String replacement = getReplacement(matcher.group(0));
builder.append(body.substring(i, matcher.start()));
if (replacement == null)
builder.append(matcher.group(0));
else
builder.append(replacement);
i = matcher.end();
}
builder.append(body.substring(i, body.length()));
return builder.toString();
}
公共字符串renderHtml(字符串体){
Pattern=Pattern.compile(“[]*[>]”);
匹配器匹配器=模式匹配器(主体);
StringBuilder=新的StringBuilder();
int i=0;
while(matcher.find()){
字符串替换=getReplacement(matcher.group(0));
append(body.substring(i,matcher.start());
如果(替换==null)
builder.append(matcher.group(0));
其他的
附加(替换);
i=matcher.end();
}
append(body.substring(i,body.length());
返回builder.toString();
}