2015-02-19 6 views
2

Рассмотрим этот пример code-удалить родительский узел, сохраняя при этом дочерний узел в jsoup

<div> 
<outer-tag> Some Text <inner-tag> Some more text</inner-tag></outer-tag> 
</div> 

Я хочу, чтобы получить следующий вывод -

<div> 
<inner-tag> Some more text</inner-tag> 
</div> 

Как этого добиться? Благодаря!

+0

Если рекурсию через все дочерние узлы, перейти к родителю текущего узла, а затем удалить узел. :) –

ответ

2

Это решение будет работать для текущего примера:

String html = "<div>" 
       + "<outer-tag> Some Text <inner-tag> Some more text</inner-tag></outer-tag>" 
       + "</div>";  

Document doc = Jsoup.parseBodyFragment(html); 

for (Element _div : doc.select("div")) { 

    // get the unwanted outer-tag 
    Element outerTag = _div.select("outer-tag").first(); 

    // delete any TextNodes that are within outer-tag 
    for (Node child : outerTag.childNodes()) { 
     if (child instanceof TextNode) child.remove(); 
    } 

    // unwrap to remove outer-tag and move inner-tag to child of parent div 
    outerTag.unwrap(); 

    // print the result 
    System.out.println(_div); 
} 

Результат является:

<div> 
<inner-tag> 
    Some more text 
</inner-tag> 
</div> 
1
$(function(){  
     var innnerText = $('inner-tag').clone(); 
     $('outer-tag').after(innnerText); 
     $('outer-tag').remove();  
    }); 
Смежные вопросы