如何从jar文件加载DTDs?
答
要从类路径(这是,当您选择类所在的空间,通常一堆罐子)加载任何文件,你可以这样做:
InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd");
然后你可以使用你想要的输入流。
注意: getResourceAsStream()使用加载类的类加载器加载资源。如果你正在申请一个应用程序,那么你的应用程序中的任何一个类都会被罚款。
答
有没有标准的方式来提供DTD的本地缓存(如果我记得正确的话,CATALOG)。因此,您需要研究将使用本地副本的解析器,并使用其非标准配置API让它知道这些本地副本,以避免网络旅程。
使用getResourceAsStream()方法从类路径中挑选出条目。
我该如何告诉JAXB Unmarshaller使用这个InputStream? – 2014-08-25 08:44:09
不知道JAXB。有关于禁用DTD检查的问答。 也许它有帮助。 http://stackoverflow.com/questions/9909465/how-to-disable-dtd-fetching-using-jaxb2-0 – helios 2014-08-25 18:40:58