默认标签属性jsoup

时间:2015-06-26 02:07:55

标签: java jsoup

我正在尝试以下代码,我希望结果是假的,但这是真的。为什么会这样?

    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>";

我想由于缺少标签而没有正确解析?

2 个答案:

答案 0 :(得分:0)

您打开它时无法关闭tr标记,需要tdth来包含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()来构建。