在Jsoup中为克隆元素设置输出设置

时间:2016-09-24 17:16:31

标签: java jsoup

使用Jsoup,克隆的元素没有所有者Document,这使我无法为这些元素设置输出设置,这导致我的应用程序中出现一些问题。试试这个:

package test;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class Main {
    public static void main(String[] args) {
        Document doc = Jsoup.parse("<div></div>");
        doc.outputSettings(new Document.OutputSettings().prettyPrint(false));
        Element e = doc.body();
        Element copy = e.clone();
        System.out.println(e.outerHtml());//returns html not pretty printed
        System.out.println(copy.outerHtml());//returns html pretty printed
        System.out.println(copy.ownerDocument());//returns null
    }
}

问题是,对于内联元素,这会产生影响。例如,如果我得到

<body>
 <div style="display:inline;">
  test
 </div>
 <div style="display:inline;">
  test
 </div>
</body>

而不是

<div style="display:inline-block;">test</div><div style="display:inline-block;">test</div>

我得到了额外的空格,这是错误的。

1 个答案:

答案 0 :(得分:0)

我认为我得到了诀窍:

class Employee {
    int id;
    int age ;
    String name ;
    String designation;
    String address;
}

我们的想法是进行新的解析以生成新的Document,然后克隆OutputSettings。不知道为什么我没想到它。