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

时间:2013-04-25 17:43:41

标签: html jsoup element

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

示例:之前

<b>some text<i> blabla </i> other text </b>

<span id='something'><b>some text<i> blabla </i> other text </b></span>

<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> 

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

 <b>some te</b>
    <span id="something"><b>
    xt</b> 
    aaa 
    <i>bb
    </i></span><i>
    b</i> 

如您所见,它必须解决标记交叉问题。

1 个答案:

答案 0 :(得分:4)

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);
}

输出

<html>
 <head></head>
 <body>
  <div>
   <span id="something"><b>some text<i> blabla </i> other text </b></span>
  </div>
 </body>
</html>