问题是,Jsoup已经“消毒”了你的HTML。作为一个快速测试,我贴你的HTML到一个页面,用我的浏览器(这往往不是消毒吧)查看它,它告诉我的HTML实际上看起来像:
<showif value="xxx"/>
<table><tbody><tr><td>test</td></tr><tr><td>xyz</td></tr></tbody></table>
这是因为只有少数几个元素允许直接在<table>
之内,并且浏览器认为你在内部放置了一个<showif>
标签,并且为你解决了这个问题。我认为Jsoup做了类似的事情。
(编辑:有Jsoup现在正在运行,而事实上它创建了一个类似的输出,如果我看doc.outerHtml()
)
如果你真的需要使用非标准的东西来诠释您的网页,你可能有更好的运气非标准的属性,如:
<table>
<tr showif="xxx"><td>test</test></td></tr>
<tr><td>xyz</td></tr>
</table>
那么你可以说:Elements showif_fields = doc.select("*[showif]");
。这产生了
<tr showif="xxx">
<td>test</td>
</tr>
作为showif_fields.outerHtml()
。
然后,您可能会采用不同的方法,例如, JavaScript模板引擎,如jQuery模板或Mustache(以及许多其他模板引擎),它们在执行一些逻辑之后插入生成的HTML,而不是将内容加载到页面上并在之后进行修复。这当然取决于你的要求,我不知道这个建议是否合理。 编辑:不,它没有任何意义,因为Jsoup是服务器端,请参阅下面的注释。
谢谢乔纳森,它的工作原理! – 2013-02-22 22:55:07