Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
强制Java在web浏览器中打开XML_Java_Xml_Browser - Fatal编程技术网

强制Java在web浏览器中打开XML

强制Java在web浏览器中打开XML,java,xml,browser,Java,Xml,Browser,我有一个程序(GUI=JavaFX),它扫描我的文件系统以查找特定的XML报告文件,并将它们列在一个表中。这些XML报告通过XSLT在web浏览器中呈现。现在,我希望能够在Java应用程序中单击这样的报告,并将其显示在浏览器中。我已经编写了处理程序,并且确定了正确的URL。在我的Windows系统上,这是 file://localhost/C:/report.xml XML不是问题所在。如果我在浏览器中手动打开它,一切正常。但是,如果我使用谷歌并询问如何在浏览器中打开文件,它总是会告诉我: j

我有一个程序(GUI=JavaFX),它扫描我的文件系统以查找特定的XML报告文件,并将它们列在一个表中。这些XML报告通过XSLT在web浏览器中呈现。现在,我希望能够在Java应用程序中单击这样的报告,并将其显示在浏览器中。我已经编写了处理程序,并且确定了正确的URL。在我的Windows系统上,这是

file://localhost/C:/report.xml
XML不是问题所在。如果我在浏览器中手动打开它,一切正常。但是,如果我使用谷歌并询问如何在浏览器中打开文件,它总是会告诉我:

java.awt.Desktop.getDesktop().
    browse(new java.net.URI("file://localhost/C:/report.xml"));
因为这是一个很好的http URL(网站)解决方案,所以它总是在我的默认文本编辑器(例如记事本++)中打开我的XML文件。因此,桌面的browse方法并没有真正强制进行浏览,只是返回到默认的open操作

因此,问题是:如何强制Java在浏览器中打开XML,类似于Windows函数“open with>”

这里是一个sscce(即使文件不存在,也应尝试在浏览器中访问该文件):


如果浏览器无法处理URI,则启动“为处理指定类型的URI而注册的应用程序被调用”


检查您最喜欢的浏览器是否存在(Chrome、Fx、O、IE等),或者通过其他方法获取它,然后。如果你知道你正在运行的操作系统(Windows),那么你只需要考虑它的Exchange行。

< P> AWT DeStop.Booad方法的JavaFX替换将是。您可以试试,但它可能会有与Desktop.browse相同的效果

另一种选择是在Java中,然后使用标签或自定义JavaFX控件在JavaFXWebView中显示生成的文档,或者仅在标签或自定义JavaFX控件中显示生成的文档。请注意,从JavaFX2.2开始,JavaFXWebView还没有用于漂亮打印xml内容类型的查看器,因此要在WebView中获得漂亮打印的xml,您可能需要使用javascript/css/html将xml解析并格式化为html文档,类似于中演示的方法


对我来说,虽然这是更多的开发工作,使用JavaFX处理显示的另一种方法很好,因为结果文档的显示可以封装并控制在JavaFX应用程序本身中,并且您不依赖于主机环境中可能安装或不安装的任何浏览器和配置。

要获得更好的帮助,请附上一份。谢谢你的sscce。返回什么?Desktop.isDesktopSupported()返回true。如果我尝试java.awt.Desktop.getDesktop().browse(新的java.net.URI(“);它会按预期打开浏览器。谢谢,Peter。我假设您已经阅读了API,但如果您没有阅读:“如果默认浏览器无法处理指定的URI,则会调用为处理指定类型的URI而注册的应用程序“是的,是的。但很明显,我的浏览器确实支持XML(就像每个浏览器一样——甚至IE!;-),因为我可以手动打开URL。它不是XML.HostServices.showDocument的默认应用程序,具有相同的效果。至于在应用程序中显示内容:对于所讨论的函数,实现工作量太大。但是谢谢你的建议。
public class XMLOpener {
  public static void main(String[] args) 
  {
    String fileURL = "file://localhost/C:/report.xml";
    try {
      java.awt.Desktop.getDesktop().browse(new java.net.URI(fileURL));
    } catch (Exception e) {}
  }
}