2010-10-12 101 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()方法從類路徑中挑選出條目。