有没有办法用Jsoup保留新行(不是)?

Document pdsc = Jsoup.connect("http://drafts.bestsiteeditor.com/promoters/dsc1387266263.txt").get();
String strText = pdsc.body().ownText();

tv.setText(strText);

TXT文件内容来自表单textarea提交,其中包含新行。
谢谢。

最佳答案

我认为在Document上没有一种方法可以返回保留新行的文本。如果您确定要打印的文本节点,则有一种方法:getWholeText(http://jsoup.org/apidocs/org/jsoup/nodes/TextNode.html#getWholeText())。如果您想要整个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
        }
    }
}

关于jsoup - 如何使用Jsoup保留新行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21158119/

10-15 17:09