冷冷的麦片 · 新闻资讯-北京大学长沙计算与数字经济研究院· 4 月前 · |
面冷心慈的啄木鸟 · 南阳市开元国际学校高中部2023年二批次招聘 ...· 5 月前 · |
小眼睛的黑框眼镜 · 中石油总裁蒋洁敏将辞职 ...· 1 年前 · |
侠义非凡的高山 · 如何看待三星的2亿像素传感器 ...· 1 年前 · |
深沉的火柴 · WORD 用翻译工具加载项时,加载项错误_百度知道· 1 年前 · |
我使用下面的代码来获得HTML,但我没有得到普通的HTML,它包含非转义字符。我使用的是JSOUP解析器,它无法解析这个HTML。
webview.evaluateJavascript(
"(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
new ValueCallback<String>() {
@Override
public void onReceiveValue(String html) {
});
我从上面的代码中得到这个html字符串。
"\u003Chtml>\u003Chead>\n \u003Cmeta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n \u003Clink rel=\"shortcut icon\" href=\"https://www.xyx.com/favicon.ico\" type=\"image/x-icon\">\n \u003Clink rel=\"icon\" href=\"https://www.xyx.com/favicon.ico\" type=\"image/x-icon\">\n \n \u003Ctitle>Page Not Found! : BJSBuzz\u003C/title>\n\n \u003C!-- \n\tOpen Source Social Network (Ossn)/script>\u003C/body>\u003C/html>"
发布于 2019-01-11 03:00:39
您应该使用JsonReader来解析值:
webView.evaluateJavascript("(function() {return document.getElementsByTagName('html')[0].outerHTML;})();", new ValueCallback<String>() {
@Override
public void onReceiveValue(final String value) {
JsonReader reader = new JsonReader(new StringReader(value));
reader.setLenient(true);
try {
if(reader.peek() == JsonToken.STRING) {
String domStr = reader.nextString();
if(domStr != null) {
handleResponseSuccessByBody(domStr);
} catch (IOException e) {
// handle exception
} finally {
IoUtil.close(reader);
}
});
发布于 2019-03-31 05:39:13
尝尝这个
v=StringEscapeUtils.unescapeJavaScript(v.substring(1,v.length()-1));
unescapeJavaScript
来自apache commons
这么多用于android webview的字符串处理,为什么.
前面的答案中提供的
removeUTFCharacters
方法是不干净的,enough.There仍然像
\"
一样。
发布于 2017-09-26 08:31:18
要删除UTFCharacthers,请使用以下函数:
public static StringBuffer removeUTFCharacters(String data) {
Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");
Matcher m = p.matcher(data);
StringBuffer buf = new StringBuffer(data.length());
while (m.find()) {
String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));
m.appendReplacement(buf, Matcher.quoteReplacement(ch));