如何选择以下元素以插入新元素?
注意:假设有效< tr>和< td>对于嵌套表并插入< pre>标签
<html>
<body>
<table>
<tbody>
....more elements here...
<table>
<tbody> <----- how do I select this?
</tbody>
</table>
</tbody>
</table>
<body>
</html>
以下选择是否有效?
// This isn't selecting the node correctly?
Element tablebody = doc.body().select("table > tbody > table > tbody").first();
Element pre = tablebody.appendElement("pre");
pre.text("hello");
答案 0 :(得分:2)
这不是有效的标记。 table
内的tbody
不能直接存在。
如果您的内部表不在tr > td
中,则该内部表实际上被构造为外部表的下一个兄弟。换句话说,你实际上根本没有内心表。
除非可以更正标记,否则你必须对待&#34;内部表&#34;作为以下兄弟姐妹:
Element tablebody = doc.body().select("table + table > tbody").first();
如果您可以更正标记,则可以使用缺少的tr
和td
位来完成选择器:
Element tablebody = doc.body().select("table > tbody > tr > td > table > tbody").first();
或者简单地用子代选择器替换其中一个子选择器:
Element tablebody = doc.body().select("table > tbody table > tbody").first();
此外,tbody
只能将tr
元素作为子元素。您无法以{1}}的方式在pre
内添加tbody
元素。您可能希望选择中的第一个tr > td
tbody
并将其附加到那里。