2016-09-24 7 views
0

Jsoupを使用すると、複製された要素には所有者のドキュメントがないため、これらの要素の出力設定を設定できなくなり、アプリで問題が発生します。これを試してください:クローンされた要素の出力設定を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のクローンを作成することです。なぜ私はそれについて考えなかったのか分かりません。

関連する問題