問題は、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()
。
次に、別のアプローチを使用したほうがよい場合があります。たとえば、jQueryテンプレートやMustache(およびその他の多く)などのjavascriptテンプレートエンジンは、コンテンツをページに読み込んで修正するのではなく、ロジックを実行した後に生成されたHTMLを挿入します。その後。もちろん、これは、この推奨事項が意味をなすかどうかを判断するのに十分な知識がないあなたの要件によって異なります。編集:いいえ、Jsoupはサーバー側であるため、意味がありません。以下のコメントを参照してください。