JSoup不生成有效的XHTML

时间:2016-09-07 09:20:19

标签: java jsoup

我正在使用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();
  }

1 个答案:

答案 0 :(得分:2)

除了(或代替)转义模式,您还需要设置语法:

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