jsoup, чтобы удалить только теги html, а не символ новой строки?

У меня есть содержимое ниже на Java, где я хочу удалить только теги html, но не символы новой строки.

<p>test1 <b>test2</b> test 3 </p> //line 1
<p>test4 </p> //line 2

Если я открою вышеуказанное содержимое в текстовом редакторе, строка 1 и строка 2 отображаются в разных строках (без отображения тега </p>). Но в блокноте содержимое отображается вместе с тегами </p>. Чтобы удалить все теги html, которые я использовал

Jsoup.parse(aboveContent).text()

Он удаляет все символы html. Но он показывает всю строку 1 и строку 2 в одной строке в блокноте. Каким-то образом Jsoup также удаляет символ новой строки.

Что я пробовал: -

Я также попытался заменить </p> на \r\n, а затем удалить теги html.

 Jsoup.parse(contentWith\r\n-Insteadof-</p>Tag ).text()

но все же Jsoup удаляет символ конца строки (поскольку в отладчике я вижу как строку 1, так и строку 2) в одной строке.

Как я могу заставить Jsoup удалять только символ html, но не символ новой строки?


person emilly    schedule 22.01.2013    source источник


Ответы (2)


Вы получаете одну строку, потому что text() удаляет все пробельные символы. Но вы можете использовать StringBuilder и вставлять туда каждую строку:

final String html = "<p>test1 <b>test2</b> test 3 </p>"
                    + "<p>test4 </p>";

Document doc = Jsoup.parse(html);        
StringBuilder sb = new StringBuilder();


for( Element element : doc.select("p") )
{
    /*
     * element.text() returns the text of this element (= without tags).
     */
    sb.append(element.text()).append('\n');
}

System.out.println(sb.toString().trim());

Вывод:

test1 test2 test 3
test4
person ollo    schedule 22.01.2013

Вы также можете сделать это:

public static String cleanNoMarkup(String input) {
    final Document.OutputSettings outputSettings = new Document.OutputSettings().prettyPrint(false);
    String output = Jsoup.clean(input, "", Whitelist.none(), outputSettings);
    return output;

}

Здесь важны следующие вещи: 1. Whitelist.none() — поэтому никакая разметка не разрешена 2..prettyPrint(false) — поэтому разрывы строк не удаляются

person trafalmadorian    schedule 23.05.2013