2016-04-01 5 views
1

У меня есть файл 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> тег должен быть добавлен (и немного больше).

ответ

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

Недурно SANDEEP! Это работает как шарм, приятная находка на insertChildren. –

Смежные вопросы