替换打开和关闭标签?

时间:2016-04-01 12:56:13

标签: java jsoup

我有一个html / xml文件,需要替换特定的标签。我遇到了以下xml:

的问题
<section>
    <banner>
</section>

我可以使用以下解决方案替换<banner>标记: Replacing tag with letters using JSoup

但是我遇到了带有孩子的标签的问题,例如: 将<section>替换为<mysection><b>,将</section>替换为</b></mysection>

(当然保留<section>标签的子女)

我试过了:

els = doc.select("section");
els.tagName("mysection");

但我也希望添加<b>标签(以及更多)。

1 个答案:

答案 0 :(得分:2)

这个怎么样

// sample data: a parent section containing nodes
String szHTML = "<section><banner><child>1</child></banner><abc></abc></section>";

Document doc = Jsoup.parse(szHTML);

// select the element section
Element sectionEle = doc.select("section").first();

// renaming the section element to mysection
sectionEle.tagName("mysection");

// get all the children elements of section element
Elements children = sectionEle.children();

// remove all the children
for(Node child: children){
    child.remove();
}

// insert element b in mysection
Element b = sectionEle.appendElement("b");

// insert all the child nodes back to element b
b.insertChildren(0, children);


System.out.println(doc.toString());

期望的输出:

  <mysection>
   <b>
    <banner>
     <child>
      1
     </child>
    </banner>
    <abc></abc></b>
  </mysection>