我正在使用HtmlUnit爲各種頁面生成HTML,但現在,我可以做的最好的方法是將頁面轉換爲服務器返回的原始HTML,並將HtmlPage轉換爲XML字符串。HtmlUnit - 將HtmlPage轉換爲HTML字符串?
這有點令人討厭,因爲Web瀏覽器呈現的XML輸出與原始HTML不同。有沒有辦法將HtmlPage轉換爲原始HTML而不是XML?
謝謝!
我正在使用HtmlUnit爲各種頁面生成HTML,但現在,我可以做的最好的方法是將頁面轉換爲服務器返回的原始HTML,並將HtmlPage轉換爲XML字符串。HtmlUnit - 將HtmlPage轉換爲HTML字符串?
這有點令人討厭,因爲Web瀏覽器呈現的XML輸出與原始HTML不同。有沒有辦法將HtmlPage轉換爲原始HTML而不是XML?
謝謝!
我不是100%肯定我理解正確的問題,但也許這將解決您的問題。
page.getWebResponse()getContentAsString()
page.asXml()
將返回HTML。 page.asText()
將其呈現爲僅顯示文本。
只是想確認這隻返回文本節點內的文本,不包括標籤及其屬性。 –
我不知道在頁面類型和XmlPage和SgmlPage上切換開關的問題,必須在HTML元素上執行innerHTML並手動寫出屬性。不優雅和確切(它缺少文檔類型),但它的工作原理。
Page.getWebResponse()。getContentAsString()
這是不正確的,它返回原來的未渲染,沒有JS字節文本形式。如果JavaScript執行並更改內容,那麼此方法將不會看到更改。
page.asXml()將返回HTML。 page.asText()將其呈現爲文本。
只想確認這隻返回文本節點內的文本,不包括標籤及其屬性。如果你想採取完整的HTML,這不是一件好事。
也許你想去的地方,而不是使用框架的HtmlUnit的方法有這樣的事情,:
try (InputStreamReader isr = new InputStreamReader(url.openConnection().getInputStream());
BufferedReader br = new BufferedReader(isr);){
String line ="";
String htmlSource ="";
while((line = br.readLine()) != null)
{
htmlSource += line + "\n";
}
return htmlSource;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
我覺得有沒有直接的方法以獲得最終頁面的HTML。 asXml()以XML形式返回結果,asText()返回提取的文本內容。
你能做的最好是用asXml()和 「改造」 它HTML:
htmlPage.asXml().replaceFirst("<\\?xml version=\"1.0\" encoding=\"(.+)\"\\?>", "<!DOCTYPE html>")
(當然你可以將更多的轉換像轉換< BR/>到<BR> - 它取決於您的要求)
即使related Google documentation建議使用此方法(雖然他們不應用任何轉換):
// return the snapshot
out.println(page.asXml());
getWebResponse()返回原始頁面,不需要腳本進行修改。所以asXml()和asText()是獲得最終頁面的更好解決方案。 – snorbi