使用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

回到顶部