设置一组节点的父元素(包裹整个组)

Pet*_*šek 3 html element jsoup

Jsoup可以设置一组节点的父元素吗?我的意思是包装它,但不是每个匹配的元素 - 只创建一个父元素?所以我想将更多元素融入其中?

示例:之前

<b>some text<i> blabla </i> other text </b>
Run Code Online (Sandbox Code Playgroud)

<span id='something'><b>some text<i> blabla </i> other text </b></span>
Run Code Online (Sandbox Code Playgroud)
<b>some te
<span id="cke_bm_69S" style="display: none;">&nbsp;</span>
xt</b> 
aaa 
<i>bb
<span id="cke_bm_69S" style="display: none;">&nbsp;</span>
b</i> 
Run Code Online (Sandbox Code Playgroud)

跨度标签是书签 - 开始选择和结束选择 - 从 CKEDITOR 添加。然后在服务器端我必须处理它。这是目标 - 添加最终跨度并删除临时跨度(书签):

 <b>some te</b>
    <span id="something"><b>
    xt</b> 
    aaa 
    <i>bb
    </i></span><i>
    b</i> 
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,它必须解决标签交叉问题。

Vit*_*aly 5

public static void main(String... args) throws IOException {

    Document document = Jsoup.parse("<div>"
            + "<b>some text<i> blabla </i> other text </b>" + "</div>");

    Element b = document.select("b").first();

    Element span = document.createElement("span");
    span.attr("id", "something");

    b.replaceWith(span);
    span.appendChild(b);

    System.out.println(document);
}
Run Code Online (Sandbox Code Playgroud)

输出

<html>
 <head></head>
 <body>
  <div>
   <span id="something"><b>some text<i> blabla </i> other text </b></span>
  </div>
 </body>
</html>
Run Code Online (Sandbox Code Playgroud)