2010-10-12 116 views

回答

1

要从类路径(这是,当您选择类所在的空间,通常一堆罐子)加载任何文件,你可以这样做:

InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd"); 

然后你可以使用你想要的输入流。

注意: getResourceAsStream()使用加载类的类加载器加载资源。如果你正在申请一个应用程序,那么你的应用程序中的任何一个类都会被罚款。

+0

我该如何告诉JAXB Unmarshaller使用这个InputStream? – 2014-08-25 08:44:09

+0

不知道JAXB。有关于禁用DTD检查的问答。 也许它有帮助。 http://stackoverflow.com/questions/9909465/how-to-disable-dtd-fetching-using-jaxb2-0 – helios 2014-08-25 18:40:58

1

有没有标准的方式来提供DTD的本地缓存(如果我记得正确的话,CATALOG)。因此,您需要研究将使用本地副本的解析器,并使用其非标准配置API让它知道这些本地副本,以避免网络旅程。

使用getResourceAsStream()方法从类路径中挑选出条目。