問題是,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