2016-09-24 51 views
0

使用Jsoup,克隆的元素沒有擁有者Document,這使得我無法設置這些元素的輸出設置,並導致我的應用程序出現一些問題。試試這個:在Jsoup中設置克隆元素的輸出設置

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> 

我得到額外的空間,這是錯誤的。

回答

0

我認爲我得到了訣竅:

Element elt = Jsoup.parse(elementToBeCloned).body().child(0); 
    elt.ownedDocument().outputSettings(elementToBeCloned.ownedDocument().outputSettings().clone()); 

的想法是做一個新的解析生成一個新文件,然後克隆OutputSettings。不知道爲什麼我沒有考慮它。