У меня есть приложение Java, которое использует библиотеку HtmlUnit, и у меня возникла проблема при получении исходного кода с xml-страницы. Все, что я получаю, это ошибка класса ClassCastException.
Я использую последнюю библиотеку API HtmlUnit 2.15.
public static void main(String[] args) {
WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setAppletEnabled(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setPopupBlockerEnabled(true);
webClient.getOptions().setPrintContentOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(true);
webClient.getOptions().setTimeout(100000);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setDoNotTrackEnabled(false);
//webClient.getOptions().setProxyConfig(new ProxyConfig("10.0.0.1", 8080));
try{
HtmlPage page = webClient.getPage("http://www.w3schools.com/xml/note.xml");
// TODO, add your application code
System.out.println(page.asXml());
} catch (Exception e) {
System.out.println("An error occurs when getting the page: "+e);
}
}
Любые идеи о том, как я могу получить xml файл через библиотеку htmlunit и сохранить его в файл?
Я понял это в конце.
Поворачивает наше, что вам сначала нужно импортировать com.gargoylesoftware.htmlunit.xml.XmlPage;
Затем вы можете объявлять объекты XmlPage, тем самым избегая проблемы с ClassCastException.
Таким образом, мой код выглядит так для тех, кто также знаком с HtmlUnit
public static void main(String[] args) {
WebClient webClient = new WebClient(BrowserVersion.CHROME);
XmlPage page = null;
webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setActiveXNative(false);
webClient.getOptions().setAppletEnabled(false);
webClient.getOptions().setCssEnabled(true);
webClient.getOptions().setPopupBlockerEnabled(true);
webClient.getOptions().setPrintContentOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setThrowExceptionOnScriptError(true);
webClient.getOptions().setTimeout(100000);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setDoNotTrackEnabled(false);
//webClient.getOptions().setProxyConfig(new ProxyConfig("10.0.0.1", 8080));
try {
//go to url
page = webClient.getPage("http://www.w3schools.com/xml/note.xml");
System.out.println(xpage.asXml());
//just for test save to file to see results
File file = new File("result.html");
FileOutputStream fos = new FileOutputStream(file);
fos.write(xpage.asXml().getBytes());
fos.close();
//end test
} catch (Exception e) {
System.out.println("An error occurs when getting the page: "+e);
}
}