Dom 选择子节点
如何选择以下元素以插入新元素Dom 选择子节点,dom,css-selectors,jsoup,Dom,Css Selectors,Jsoup,如何选择以下元素以插入新元素 注意:对于嵌套表,假设有效和,并插入无效标记的。表格不能直接存在于t正文中 <html> <body> <table> <tbody> ....more elements here... <table> <tbody> <----- how do I select this? </tbo
注意:对于嵌套表,假设有效和,并插入无效标记的。
表格
不能直接存在于t正文
中
<html>
<body>
<table>
<tbody>
....more elements here...
<table>
<tbody> <----- how do I select this?
</tbody>
</table>
</tbody>
</table>
<body>
</html>
如果内部表不在tr>td
中,则该内部表实际上是作为外部表的下一个同级表构造的。换句话说,您实际上根本没有内部表
除非可以更正标记,否则必须将该“内部表”视为以下同级:
Element tablebody = doc.body().select("table > tbody > tr > td > table > tbody").first();
如果可以更正标记,则可以使用缺少的tr
和td
位完成选择器:
Element tablebody = doc.body().select("table > tbody table > tbody").first();
或者简单地用后代选择器替换其中一个子选择器:
此外,
tbody
只能将tr
元素作为子元素。不能按照您尝试的方式将pre
元素附加到tbody
中。您可能希望在tbody
中选择第一个tr>td
,并将其附加到那里。“假设有效并用于[…]插入标记。”考虑到您的代码,这显然是不可能的。您的代码清楚地显示了在tbody
元素中插入pre
。你不能只是在纸上做假设,然后假装你的代码将基于这些假设工作(除非jsoup知道如何自己解决这个问题)。选择(“表格>车身表格>车身”).first();工作得很好!
<html>
<body>
<table>
<tbody>
....more elements here...
<table>
<tbody> <----- how do I select this?
</tbody>
</table>
</tbody>
</table>
<body>
</html>
Element tablebody = doc.body().select("table > tbody table > tbody").first();