如何使用Jsoup将HTML文档的body内容包裹到表格单元格中
解决方法
你的问题出在拼接HTML字符串的逻辑错误,导致原body内容被放到了表格外部。正确的做法是利用Jsoup的DOM操作API,直接将body内的元素移动到表格单元格中,而不是手动拼接字符串。
正确代码示例:
Document ht = Jsoup.parse(test); Element body = ht.body(); // 创建表格相关元素 Element table = ht.createElement("table"); Element tr = ht.createElement("tr"); Element td = ht.createElement("td"); // 将body内的所有子元素移动到td中 while (body.childNodeSize() > 0) { td.appendChild(body.child(0)); } // 组装表格结构并添加到body tr.appendChild(td); table.appendChild(tr); body.appendChild(table); // 输出结果 System.out.println(ht.html());
代码说明:
- 先创建
table、tr、td元素,避免手动拼接HTML字符串可能出现的格式错误。 - 通过
while循环把body里的所有子元素逐个移动到td中,确保原内容完全被包裹在单元格内。 - 最后把组装好的表格添加到空的body中,完成结构改造。
为什么你的代码失效?
你原来的代码里,拼接的字符串是:
"<table><tr><td></td>" + ht.body().html() + "</td></tr></table>"
这相当于把原body内容放在了</td>之后,也就是表格的外部,自然会出现内容和表格同级的情况。用Jsoup的DOM移动操作能更精准地控制元素层级,避免这类问题。
内容的提问来源于stack exchange,提问作者RKodakandla
相关产品推荐
相关产品推荐

