使用javafx从webview获取内容
我正在使用JAVAFX控件开发一个swing应用程序。在我的应用程序中,我必须打印出Webview中显示的html页面。我正在尝试的是借助HtmlDocuement将Webview的html内容加载为字符串。
要从Web视图加载html文件的内容,我正在使用以下代码,但无法正常工作:
try{
String str=webview1.getEngine().getDocment().Body().outerHtml();
}
catch(Exception ex)
{
}
回答:
WebEngine.getDocument
返回org.w3c.dom.Document
,而不是您希望通过代码判断的JavaScript文档。
不幸的是,打印出来org.w3c.dom.Document
需要大量的编码。您可以尝试以下解决方案:将org.w3c.dom.Document漂亮地打印到stdout的最短方法是什么?,请参见下面的代码。
请注意,您需要等到文档加载后才能使用Document
。这就是为什么LoadWorker
在这里使用它:
public void start(Stage primaryStage) {WebView webview = new WebView();
final WebEngine webengine = webview.getEngine();
webengine.getLoadWorker().stateProperty().addListener(
new ChangeListener<State>() {
public void changed(ObservableValue ov, State oldState, State newState) {
if (newState == Worker.State.SUCCEEDED) {
Document doc = webengine.getDocument();
try {
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
transformer.transform(new DOMSource(doc),
new StreamResult(new OutputStreamWriter(System.out, "UTF-8")));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
});
webengine.load("http://stackoverflow.com");
primaryStage.setScene(new Scene(webview, 800, 800));
primaryStage.show();
}
以上是 使用javafx从webview获取内容 的全部内容, 来源链接: utcz.com/qa/400561.html