Android - 解析Html代码的文本并不解析属性的引号

时间:2013-01-21 19:11:52

标签: android html webview html-parsing image

我想将以下代码解析为HTML代码并在WebView中显示。这很好,但是......

要解析的代码:

<img src="http://...jpeg" alt="„Indoor Maps“ von Google" align="left" style="padding-right:5px">\n\n\nEinfachere Navigation in Gebäuden verspricht Indoor Maps von Google. Der Praxis-Test von COMPUTER BILD im Hamburger „Alsterhaus“ verlief aber kurios.<br>Foto: ComputerBILD<br>

尝试1)Html.toHtml(Code) - 解析好的文本的变音符号和引号,img-tag仍然有效(引号)。但是删除了一些img属性,例如altalign。结果:

<p><img src="http://...jpeg"> Einfachere Navigation in Geb&#228;uden verspricht Indoor Maps von Google. Der Praxis-Test von COMPUTER BILD im Hamburger &#8222;Alsterhaus&#8220; verlief aber kurios.<br>\nFoto: ComputerBILD<br>\n</p>\n

尝试2)external library: org.apache.commons.lang3.StringEscapeUtils.escapeHtml4(Code) - 解析所有变音符号和引号。解析引号会破坏img-tag。现在我无法在WebView上显示图像。 img-tags未删除的地方。结果:

&lt;img src=&quot;http://...jpeg&quot; alt=&quot;&bdquo;Indoor Maps&ldquo; von Google&quot; align=&quot;left&quot; style=&quot;padding-right:5px&quot;&gt;\n\n\nEinfachere Navigation in Geb&auml;uden verspricht Indoor Maps von Google. Der Praxis-Test von COMPUTER BILD im Hamburger &bdquo;Alsterhaus&ldquo; verlief aber kurios.&lt;br&gt;Foto: ComputerBILD&lt;br&gt;

我知道这个类别有很多帖子,但我找不到解析html代码的帮助,也没有“触及”属性的引号。我很兴奋。

修改

这是完整的Html代码

    StringBuilder html = new StringBuilder();
    html.append("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">");
    html.append("<html>");
    html.append("<head>");
    html.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">");
    html.append("<title></title>");
    html.append("</head>");
    html.append("<body bgcolor=\"white\" leftmargin=\"0\" topmargin=\"0\">");       
    html.append(CODE AT THE TOP);
    html.append("</body>");
    html.append("</html>");

当我使用UTF-8时,我得到了相同的结果......

webView.loadData(html.toString(), "text/html", "iso-8859-1");

@Christiaan:当我将未解析的代码设置为WebView

时,这是当前的结果

3 个答案:

答案 0 :(得分:1)

您确定要使用toHtml吗?看起来你已经有了html,你应该使用Html.fromHtml()甚至一无所有。只需将字符串保持原样并在WebView中显示它?

答案 1 :(得分:1)

啊,现在看起来像编码问题。 尝试在源代码,html和要插入的代码段中使用UTF-8。

如:

html.append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\">");

webView.loadData(html.toString(), "text/html", "UTF-8");

确保“顶部代码”也是UTF-8。

确保您的源代码也是UTF-8(在您的ide中搜索编码)

答案 2 :(得分:0)

我发现这篇文章,现在可以了:) Android. WebView and loadData


myWebView.loadData(myHtmlString, "text/html; charset=UTF-8", null);

这完美无缺,特别是在Android 4.0上,显然忽略了HTML中的字符编码。 测试2.3和4.0.3。