我正在尝试以下代码,我希望结果是假的,但这是真的。为什么会这样?
String html = "<p><tr valign = 'top' />Link</p>";
Whitelist whiteList = Whitelist.relaxed();
whiteList.addAttributes("tr","align","bgcolor");
boolean valid = Jsoup.isValid(html, whiteList);
System.out.println(valid);
我也尝试过以下方式,返回的值为true
String html = "<p><tr valign = 'top' />Link</p>";
Whitelist whiteList = Whitelist.basic();
whiteList.addAttributes("tr","align","bgcolor");
boolean valid = Jsoup.isValid(html, whiteList);
System.out.println(valid);
即使添加
whiteList.removeAttributes("tr","valign");
有人能告诉我为什么会这样吗?
编辑 -
通过进行以下更改,我能够让它运行
String html = "<p><table><tr valign='top'/>Link</table></p>";
我想由于缺少标签而没有正确解析?
答案 0 :(得分:0)
您打开它时无法关闭tr
标记,需要td
或th
来包含tr
中的任何内容。并且您不能在段落中嵌入表格行。基本上,
"<p><tr valign = 'top' />Link</p>"
应该是
"<table><tr valign='top'><th>Link</th></tr></table>"
答案 1 :(得分:0)
因为您已调用Whitelist.relaxed();
来构建Whitelist
。
relax():这个白名单允许全范围的文本和结构体HTML:a,b,blockquote,br,caption,cite,code,col,colgroup,dd,div,dl,dt,em,h1, h2,h3,h4,h5,h6,i,img,li,ol,p,pre,q,small,span,strike,strong,sub,sup,table,tbody,td,tfoot,th,thead,tr,你好,
您应该使用Whitelist.none()
来构建。