我理解 Jsoup 的行为是尝试 do the best by adding missing tag or removing existing tag .它仍然应该在错误解析器列表中报告。下面是我的示例代码。
final String test = "<img /><noscript><a href=\"http://www.google.com\">google</a>";
Parser parser = Parser.htmlParser();
parser.setTrackErrors(10);
Document document = parser.parseInput(test, StringUtils.EMPTY);
System.out.println("BEFORE: " + test);
System.out.println("JSPARSED: " + StringUtils.remove(document.body().html(), "\n"));
System.out.println("Tracking errors: " + parser.isTrackErrors());
System.out.println("Number of errors: " + parser.getErrors().size());
这给了我:
ORIGINAL: <img /><noscript><a href="http://www.google.com">google</a>
JSPARSED: <img /><noscript> <a href="http://www.google.com">google</a></noscript>
Tracking errors: true
Number of errors: 0
请注意,Jsoup 插入了一个新的非脚本封闭标记,但没有在错误列表中报告该问题。我正在使用 Jsoup 1.7.3。知道为什么要这样做吗?这是错误吗?
最佳答案
这不是错误。
在解析带有未闭合标签的无效 HTML 时,它遵循浏览器的标准。
这是 1.7.2 版本中的一个错误,已在 1.7.3 版本中修复
你可以在这里查看:
错误报告 stackoverflow
错误报告 github
关于java - 为什么Jsoup遇到标签丢失不报错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22808101/