Как сохранить новые строки с Jsoup?
Есть ли способ сохранить новые строки (не
) с помощью Jsoup?
Document pdsc = Jsoup.connect("http://drafts.bestsiteeditor.com/promoters/dsc1387266263.txt").get();
String strText = pdsc.body().ownText();
tv.setText(strText);
Содержимое файлов TXT взято из представления textarea формы, в котором есть новые строки. Благодарю.
1 ответ
В документе я не думаю, что есть метод для возврата текста, который сохраняет новые строки. если вы идентифицируете текстовый узел, который хотите напечатать, есть метод: getWholeText ( http://jsoup.org/apidocs/org/jsoup/nodes/TextNode.html). Если вы хотите для всего HTML, вы должны извлечь все текстовые узлы (рекурсивный обход документа). Для вашего примера (у него только один текстовый узел):
Document pdsc = Jsoup.connect("http://drafts.bestsiteeditor.com/promoters/dsc1387266263.txt").get();
System.out.println(((TextNode) pdsc.select("body").first().childNode(0)).getWholeText());
Более общее решение:
private static void prinWholeText(Document doc) {
List<TextNode> textNode = getAllTextNodes(doc);
for(TextNode tn:textNode){
System.out.println(tn.getWholeText());
}
}
private static List<TextNode> getAllTextNodes(Document doc) {
List<TextNode> nodes = new ArrayList<>();
allTextNodes(doc, nodes);
return nodes;
}
private static void allTextNodes(Element element, List<TextNode> nodes) {
for(Node child: element.childNodes()){
if(child instanceof TextNode){
nodes.add((TextNode) child);
} else{
if(child instanceof Element){
allTextNodes((Element) child, nodes);
}
//implement others
}
}
}