解析body片段
问题
有一个body HTML片段(e.g. 包含一些p标签的div;一个不完整的HTML文档)需要解析,它可能是由用户提交的评论,或是在CMS(内容管理系统)中编辑页面的主体。
解决方案
使用Jsoup.parseBodyFragment(html)
方法。
String html = "<div><p>Lorem ipsum.</p>";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
描述
parseBodyFragment
方法创建一个空文档,并插入解析过的HTML到body
元素中。使用普通的Jsoup.parse(String html)
方法通常也可以得到相同的结果,但是显式的将输入看作一个body片段可以确保用户输入的任何糟糕的HTML解析成body
元素。
Document.body()
方法能够检索文档对象中body
元素的所有子元素,它相当于doc.getElementsByTag("body")
。
安全保证
如果需要接受来自用户输入的HTML,需要小心的避免跨站点脚本(cross-site)攻击。利用基于Whitelist
的清除器和clean(String bodyHtml, Whitelist whitelist)
方法来清除用户输入的恶意内容。