我正在使用JSoup动态设置HTML文档中<base/>
元素的href属性。除了从修改后的HTML中省略了结束</base>
标记这一事实之外,这仍然可以正常工作。
有没有办法让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();
}
答案 0 :(得分:2)
除了(或代替)转义模式,您还需要设置语法:
document.outputSettings().syntax(Document.OutputSettings.Syntax.xml);