+-
java – Jsoup检查字符串是否有效HTML
我在使用Jsoup解析器时遇到了困难.如何判断给定的字符串是否是有效的 HTML代码?

String input = "Your vote was successfully added."
boolean isValid = Jsoup.isValid(input);
// isValid = true

isValid标志是真的,因为Jsoup首先使用HtmlTreeBuilder:如果没有html,head或body标签丢失,它会自己添加它们.然后它使用Cleaner类并根据给定的白名单进行检查.

有没有简单的方法来检查字符串是否是有效的HTML而没有Jsoup尝试使其成为HTML?

我的例子是AJAX响应,它是“text / html”内容类型.然后它转到解析器,Jsoup添加了这个标签,结果,响应没有正确显示.

谢谢你的帮助.

最佳答案
首先,Reuben提出的解决方案没有按预期工作.必须使用Pattern.DOTALL标志编译模式.输入HTML可能有(也可能会)新的线路标志等.

所以它应该是这样的:

Pattern htmlPattern = Pattern.compile(".*\\<[^>]+>.*", Pattern.DOTALL);
boolean isHTML = htmlPattern.matcher(input).matches();

我也认为这种模式不仅应该找到HTML标签.下一个:不是唯一有效的选项.也可能有属性,即.这也必须处理.

我选择修改Jsoup源代码.如果HTMLTreeBuilder(实际上是状态BeforeHtml)尝试添加< html> element我抛出ParseException然后我确定输入文件不是有效的HTML文件.

点击查看更多相关文章

转载注明原文:java – Jsoup检查字符串是否有效HTML - 乐贴网