2014-11-10 2 views
0
String testCases[] = { 
     "<table><tbody><tr><td><div><inline>Normal Line Text</inline><br/></div></td></tr></tbody></table>",     
}; 
for (String testString : testCases) { 
    Document doc = Jsoup.parse(testString,"", Parser.xmlParser()); 
    Elements elements = doc.select("table"); 
    for (Element ele : elements) { 
     System.out.println("==============================================="); 
     System.out.println(ele.html());    //Formatted 
     System.out.println("-----------------------------------------------"); 
     System.out.println(ele.html().trim().replace("\n","").replace("\r","")); //Notice the Difference 
    } 
} 

Выход:Как получить отформатированный HTML из Jsoup

=============================================== 
<tbody> 
<tr> 
    <td> 
    <div> 
    <inline> 
    Normal Line Text 
    </inline> 
    <br /> 
    </div></td> 
</tr> 
</tbody> 
----------------------------------------------- 
<tbody> <tr> <td> <div> <inline>  Normal Line Text </inline> <br /> </div></td> </tr></tbody> 

Из-за форматирование сделанного JSoup, значение textNodes изменить, чтобы включить новые строки.

Изменение <inline> к <span> в тестовом случае, кажется, работает хорошо, но, к сожалению, у нас есть устаревшие данные/HTML, содержащий <inline> тегов, генерируемых редактор.

ответ

1

Попробуйте это:

Document doc = Jsoup.parse(testString,"", Parser.xmlParser()); 
doc.outputSettings().prettyPrint(false); 

Надеется, что это помогает.

Взятый с https://stackoverflow.com/a/19602313/3324704

+1

работал как очарование. Также работает без 'Parser.xmlParser()' –