2012-04-16 3 views
2

Мне нужно заменить несколько тегов HTML новой строкой, например. р тег, как вы видите в коде примера:Jsoup: заменить тег новой строкой => новая строка начинается с пробела

String html = "<p>Zeile1</p><p>Zeile2</p><p>Zeile3</p><p>Zeile4</p>"; 
Document doc = Jsoup.parse(html); 
doc.select("p").append("\\n"); 
String sanitized = doc.text().replaceAll("\\\\n", System.getProperty("line.separator"); 
System.out.println(sanitized); 

Вот результат:

Zeile1 
Zeile2 
Zeile3 
Zeile4 

Как вы можете видеть, я получаю пробелы в строках 2-4. Откуда они взялись и как я могу избавиться от них?

+0

пространства добавляются между 'p' элементами, как только вы вызываете' текст() 'в документе. Не знаю, почему. Вы можете получить коллекцию каждого текстового элемента и объединить их, чтобы избавиться от пробелов, если для него нет настроек. – bdares

ответ

2

Как @bdares предложение, вы можете перебирать элементы:

String html = "<p>Zeile1</p><p>Zeile2</p><p>Zeile3</p><p>Zeile4</p>"; 
Document doc = Jsoup.parse(html); 
StringBuilder b = new StringBuilder(); 
for (Element p : doc.select("p")) { 
    b.append(p.text()); 
    b.append(System.getProperty("line.separator")); 
} 
System.out.println(b.toString()); 

Выход:

Zeile1 
Zeile2 
Zeile3 
Zeile4 
+0

Спасибо за ваш ответ, но я использовал метод String.trim() для очистки пробелов, потому что я не только заменяю тег p, но еще несколько, например div, pre, br, h1-h6, ... – Qowaz