2017-01-06 12 views
0

Я пытаюсь удалить p теги, которые не содержат никакого текста. И если какой-либо тег p содержит текст, но не содержит какой-либо родительский тег, Так что я пытаюсь создать родительский тег DIV. Я пытаюсь сделать конвертировать из org.jsoup.nodes.Document в org.w3c.dom.Document.Удалить пустой тег p из переменной String с помощью Java?

Возможно ли это или любое короткое решение?

Java код:

private void modifyMediaVariantContent(String html) { 

    org.jsoup.nodes.Document doc = Jsoup.parse(html); 

    for (org.jsoup.nodes.Element element : doc.select("*")) { 
     if (!element.hasText() && element.isBlock()) { 
      element.remove(); 
     } 
    } 
} 

HTML Строковое значение:

До:

<p id="Id44">see the image and see the color... ?</p> 
<p id="Id40"></p> 
<div id="Id87" style="display:inline-block"> 
<video id="Id30" src="http://Id3.qa.cete.us/117973/video.mp4"></video> 
</div> 
<p id="Id28"></p> 
<p id="Id-1"></p> 
<div id ="Id21"> 
<img id="img_44186" src="/129884/apple.jpg" /> 
</div> 
<p id="Id-320046-3-21"></p> 

После :: Результат:

<div> 
<div id = "passageContent"> 
<p id="Id44">see the image and see the color... ?</p> 
<div> 
<div id="Id87" style="display:inline-block"> 
<video id="Id30" src="http://Id3.qa.cete.us/117973/video.mp4"></video> 
</div> 
<div id ="Id21"> 
<img id="img_44186" src="/129884/apple.jpg" /> 
</div> 
</div> 

или Результат:

<div> 
<p id="Id44">see the image and see the color... ?</p> 
<div id="Id87" style="display:inline-block"> 
<video id="Id30" src="http://Id3.qa.cete.us/117973/video.mp4"></video> 
</div> 
<div id ="Id21"> 
<img id="img_44186" src="/129884/apple.jpg" /> 
</div> 
</div> 
+1

Пожалуйста, включите в свой вопрос, как HTML должен выглядеть ** после того, как ** он был обработан, как и раньше. – Michael

ответ

1

Взгляните на следующий фрагмент:

public class Test { 

    public static void main(String[] args) { 
     try { 
      String html = "<p id=\"Id44\">see the image and see the color... ?</p>\r\n" + "<p id=\"Id40\"></p>\r\n" 
        + "<div id=\"Id87\" style=\"display:inline-block\">\r\n" 
        + "<video id=\"Id30\" src=\"http://Id3.qa.cete.us/117973/video.mp4\"></video>\r\n" + "</div>\r\n" 
        + "<p id=\"Id28\"></p>\r\n" + "<p id=\"Id-1\"></p>\r\n" + "<div id =\"Id21\">\r\n" 
        + "<img id=\"img_44186\" src=\"/129884/apple.jpg\" />\r\n" + "</div>\r\n" + "<p id=\"Id-320046-3-21\"></p>"; 
      new Test().modifyMediaVariantContent(html); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    private void modifyMediaVariantContent(String html) { 
     org.jsoup.nodes.Document doc = Jsoup.parse(html); 
     for (org.jsoup.nodes.Element element : doc.getElementsByTag("p")) { 
      if (!element.hasText() && element.isBlock()) { 
       element.remove(); 
      } 
      if (element.hasText() && element.parent() == doc.body()) { 
       Element replacment = new Element(Tag.valueOf("div"), ""); 
       replacment.appendChild(element.clone()); 
       element.replaceWith(replacment); 
      } 
     } 

     System.out.println(doc.body().html()); 
    } 
} 

Это выводит следующее:

<div> 
<p id="Id44">see the image and see the color... ?</p> 
</div> 
<div id="Id87" style="display:inline-block"> 
<video id="Id30" src="http://Id3.qa.cete.us/117973/video.mp4"></video> 
</div> 
<div id="Id21"> 
<img id="img_44186" src="/129884/apple.jpg"> 
</div> 

Чтобы преобразовать документ Jsoup до org.w3c.dom.Documentorg.jsoup.helper.W3CDom:

W3CDom w3cDom = new W3CDom(); 
org.w3c.dom.Document w3cDoc = w3cDom.fromJsoup(doc); 
0

Вы можете использовать RegExp:

html.replaceAll("<p id=\".*\"></p>\n", "");