HtmlUnit处理空白

HtmlUnit处理空白,htmlunit,Htmlunit,我正在使用HtmlUnit对Html页面进行一些处理。我的问题是,它似乎没有正确地维护空白 原始html如下所示: <div><cite>www.<b>example</b>.com</cite> 其呈现为: www.example.com 在使用html单元对dom的其他部分进行解析之后,我使用getXml将html打印出来。这样做会使html打印得非常漂亮: <div> <cite>

我正在使用HtmlUnit对Html页面进行一些处理。我的问题是,它似乎没有正确地维护空白

原始html如下所示:

<div><cite>www.<b>example</b>.com</cite>
其呈现为:

www.example.com

在使用html单元对dom的其他部分进行解析之后,我使用getXml将html打印出来。这样做会使html打印得非常漂亮:

  <div>
    <cite>
      www.
      <b>
        example
      </b>
      .com
     </cite>
最终渲染为:

www.example.com

注意示例前后的额外空格

我试着从打印出来的漂亮dom中删减空白,但在实际需要的地方会丢失空格

在生成的dom中,HtmlUnit似乎在创建所有DomText节点时会修剪它们,因此空间信息丢失


是否有任何方法可以配置HtmlUnit来跟踪此信息?还是其他更好地维护原始html的方法?我只需要能够通过XPath获取html的额外部分。

我认为这应该返回原始html:

WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://www.yourpage.com");
String originalHtml = page.getWebResponse().getContentAsString();

使用JavaScript获取html时不需要额外的空格:

WebClient client = new WebClient(BrowserVersion.FIREFOX_17);
HtmlPage page = client.getPage(url);
client.waitForBackgroundJavaScript(5000);

String html = htmlPage.executeJavaScript("document.body.parentNode.outerHTML")
    .getJavaScriptResult()
    .toString();

漂亮的打印是否使用空格或制表符?如果是制表符,您不能替换输出标记中的所有换行符和制表符,而不使用空格吗?这是一个好主意。看起来这些空格根本没有被保留,只是按照缩进对齐而已。谢谢你的建议。不幸的是,我需要一个修改过的页面版本,所以我需要从构建的页面获得它,而不是原始的web响应。