HtmlUnit处理空白
问题描述:
我正在使用HtmlUnit对Html页面进行一些处理。我的问题是,它似乎没有正确保持空白。HtmlUnit处理空白
原始的HTML看起来像:
WWW:
<div><cite>www.<b>example</b>.com</cite>
其中作为渲染。 示例 .com
在使用html单元对dom的其他部分进行一些解析之后,我使用getXml()打印出html。这样做会导致要美化打印的HTML:
<div>
<cite>
www.
<b>
example
</b>
.com
</cite>
这最终呈现为:
WWW。 示例 .com
请注意示例之前和之后的额外空间。
我试着只是修剪从生成的漂亮打印的dom空白,但然后你失去了你真正想要他们的地方的空间。
单步执行生成的dom时,看起来HtmlUnit会在创建DomText节点时修剪所有DomText节点,因此空间信息将丢失。
有什么办法可以配置HtmlUnit来跟踪这些信息吗?或者更好地维护原始html的一些替代方法?我只需要能够通过XPath获得额外的HTML部分。
答
我想这应该返回原始的HTML:
WebClient webClient = new WebClient();
HtmlPage page = webClient.getPage("http://www.yourpage.com");
String originalHtml = page.getWebResponse().getContentAsString();
+0
感谢您的建议。不幸的是我需要一个改变版本的页面,所以我需要从构建的页面获取它,而不是原始的Web响应。 – 2012-03-30 18:54:30
答
使用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();
是否漂亮的打印使用空格或制表符?如果选项卡,你不能替换输出标记中的所有换行符和制表符,而只留下空格? – aroth 2012-03-30 00:22:32
这是一个很好的想法。它看起来像空间根本没有维护,但它们都根据缩进来对齐。 – 2012-03-30 18:56:33