如何验证html字符串中至少有一个元素是否包含内容?

时间:2015-10-22 20:37:27

标签: java html

我有一个我无法修改的所见即所得编辑器有时会返回from django.contrib import messages def gomoz(request): scrapeshop() messages.info(request, 'Your message goes here') return HttpResponseRedirect('the-url-of-your-change-list-page') ,对于使用所见即所得的人来说,它显然看起来像一个空场。

所以我需要在使用java的后端添加一些验证。

应该被拒绝

<p></p>

应该被接受

<p></p>
<p> </p>
<div><p> </p></div>

基本上只要任何元素包含某些内容我们就会接受并保存它。

我正在寻找我应该关注的图书馆以及如何处理它的想法。感谢。

3 个答案:

答案 0 :(得分:3)

您可以查看jsoup库。这很快

它需要HTML并且您可以从中返回文本(请参阅下面的网站上的示例)。

Extract attributes, text, and HTML from elements

String html = "<p>An <a href='http://example.com/'><b>example</b></a> link.</p>";
Document doc = Jsoup.parse(html);
String text = doc.body().text(); // "An example link"

答案 1 :(得分:1)

您可以使用regular expressions(内置于Java)。

例如,

"<p>\\s*\\w+\\s*</p>"

会将<p>标记与至少1个字符的内容匹配。

答案 2 :(得分:1)

我建议你在客户端这样做。原因是浏览器自然会这样做。你需要在发送或“保存”部分挂钩你的所见即所得编辑器,其中很多都有这种能力。

Javascript就是

function stripIfEmpty(html)
{
   var tmp = document.createElement("DIV");
   tmp.innerHTML = html;
   var contentText = tmp.textContent || tmp.innerText || "";
   if(contentText.trim().length === 0){
       return "";
   }else{
       return html;
   }
}

如果您需要后端javascript,那么唯一正确的解决方案是使用一些解析HTML的库,比如jsoup - @Dmytro Pastovenskyi向您展示。

如果你想使用后端,但允许它是模糊的,而不是严格的,那么你可以使用像replaceAll("\\<[^>]*>","")这样的正则表达式然后修剪,然后检查字符串是否为空。