+-
我在使用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 - 乐贴网