2015-02-04 4 views
1

Начну с самого начала, есть HTML с рисунком, как это:Java Jsoup - элемент не удаляется из элементов

<div id="post_message_(some numeric id)"> 
    <div style="some style things"> 
     <div class="smallfont" style="some style">useless text</div> 
     <table cellpading="6" cellspaceing=.......> a lot of text inside i dont need</table> 
    </div> 
    Text i need 
</div> 

эти DIV с стилей и что таблица не является обязательным, иногда просто

<div id="post"> 
    Text i need 
</div> 

И я хочу разобрать этот текст на String. Здесь, S кода, я использую

Elements divsInside = element.getElementById("post_message_" + id).getElementsByTag("div"); 
    for(Element div : divsInside) { 
     if(div != null && div.attr("style").equals("margin:20px; margin-top:5px; ")) { 
      System.out.println(div.html()); 
      div.remove(); 
      System.out.println("div removed"); 
     } 
    } 

Я добавил эти строки печати, чтобы проверить, если он находит их, и да, это действительно найти правильные данные, но позже, когда я разбор его строку:

String message = Jsoup.parse(divsInside.html().replaceAll("(?i)<br[^>]*>", "br2n")).text() 
      .replaceAll("br2n", "\n"); 

Струна содержит все, что удаляло материал снова по некоторым причинам.

Я попытался удалить их с помощью итераторов или заполнить и удалить элементы по индексам, так что результат будет таким же.

ответ

1

Итак, вы хотите получить Text i need. Использовать Element's ownText() метод, который Gets the text owned by this element only; does not get the combined text of all children.

private static void test(String htmlFile) { 
    File input = null; 
    Document doc = null; 
    Element specificIdDiv = null; 

    try { 
     input = new File(htmlFile); 
     doc = Jsoup.parse(input, "ASCII", ""); 
     doc.outputSettings().charset("ASCII"); 
     doc.outputSettings().escapeMode(EscapeMode.base); 

     /** Get Element id = post_message_1 **/ 
     specificIdDiv = doc.getElementById("post_message_1"); 

     if (specificIdDiv != null) { 
      System.out.println("content: " + specificIdDiv.ownText()); 
     } 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
+0

.ownText() thats, что мне нужно, спасибо. –

+0

Btw возможно вытяжка линии разрывов/
вот так? –

+0

Выдержка
, вы имеете в виду удалить
? –

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