2017-01-06 8 views
0

テキストが含まれていないpのタグを削除しようとしています。 pタグにはテキストが含まれていますが、親タグは含まれていない場合は、です。親タグDIVを作成しようとしています。私はしようとしています org.jsoup.nodes.Documentからorg.w3c.dom.Documentに変換しようとしています。Javaを使用してString変数から空のpタグを削除しますか?

これは可能なのですか?

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.Documentへの使用org.jsoup.helper.W3CDom

0

あなたは正規表現を使用することができます。

html.replaceAll("<p id=\".*\"></p>\n", ""); 
関連する問題