2016-09-07 7 views
2

私はJSoupを使用して、HTML文書の<base/>要素のhref属性を動的に設定しています。これは、変更されたHTMLから閉じる</base>タグが省略されていることを除いて、期待通りに機能します。JSoupが有効なXHTMLを生成しない

JSOUPに有効なXHTMLを返す方法はありますか?

入力:

<html><head><base href="xyz"/></head><body></body></html> 

出力:

<html> 
<head> 
    <base href="https://myhost:8080/myapp/"> <-- missing closing tag 
</head> 
<body></body> 
</html> 

コード:エスケープモードに(またはその代わりに)加えて

protected String modifyHtml(HttpServletRequest request, String html) 
    { 
    Document document = Jsoup.parse(html); 
    document.outputSettings().escapeMode(EscapeMode.xhtml); 
    Elements baseElements = document.select("base"); 

    if (!baseElements.isEmpty()) 
    { 
     Element base = baseElements.get(0); 
     base.attr("href", getBaseUrl(request)); 
    } 

    return document.html(); 
    } 

答えて

2

は、次の構文を設定します:

document.outputSettings().syntax(Document.OutputSettings.Syntax.xml); 
+0

ありがとうございます。エスケープモードの修正を設定する代わりに、それを使用します。 –

関連する問題