【发布时间】:2012-08-17 21:22:03
【问题描述】:
我有一个程序 (GUI = JavaFX),它扫描我的文件系统以查找特定的 XML 报告文件并将它们列在一个表中。这些 XML 报告由 XSLT 在 Web 浏览器中呈现。现在我希望能够在我的 Java 应用程序中单击这样的报告并将其显示在浏览器中。我已经编写了处理程序并确定了正确的 URL。在我的 Windows 系统上,这是
file://localhost/C:/report.xml
XML 不是问题。如果我在浏览器中手动打开它,一切正常。但是,如果我使用 Google 并询问如何在浏览器中打开文件,它总是会给我这个:
java.awt.Desktop.getDesktop().
browse(new java.net.URI("file://localhost/C:/report.xml"));
由于这是一个很好的 http URL(网站)解决方案,它总是在我的默认文本编辑器(例如 Notepad++)中打开我的 XML 文件。所以Desktop的browse方法并没有真正强制浏览,只是回退到一个默认的打开操作。
所以问题是:如何强制 Java 在浏览器中打开 XML,类似于 Windows 功能“打开方式 >”?
这里是一个 sscce(它应该尝试在浏览器中访问该文件,即使它不存在):
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) {}
}
}
【问题讨论】:
-
如需尽快获得更好的帮助,请附上sscce。
-
感谢 sscce。
Desktop.isDesktopSupported()返回什么? -
Desktop.isDesktopSupported() 返回真。如果我尝试 java.awt.Desktop.getDesktop().browse(new java.net.URI("google.com")); 它会按预期打开浏览器。
-
谢谢,彼得。我假设您已经阅读过 API,但如果您还没有阅读过:“如果默认浏览器无法处理指定的 URI,则会调用为处理指定类型的 URI 而注册的应用程序”。
-
是的,我做到了。但显然我的浏览器确实支持 XML(就像每个浏览器都支持 - 甚至 IE!;-)),因为我可以手动打开 URL。它只是不是 XML 的默认应用程序。