2013-03-25 70 views
2

我無法從我的servlet正確地加載文件的XML: 是這樣的代碼:閱讀從servlet的XML文件

 try{ 

      DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder db = dbf.newDocumentBuilder(); 
      Document doc = db.parse("db.xml"); 
     } catch (Exception ex) { 
     ex.printStackTrace(); 
      out.print("File Not Found!"); 
    } 

的db.xml是內部類與類和java文件夾文件...

+1

如果它在類路徑上,則需要使用'ClassLoader#GetResourceAsStream'。 – 2013-03-25 23:18:34

+0

Document doc = ClassLoader.getResourceAsStream(「db.xml」); ??? – 2013-03-25 23:22:19

+0

閱讀'Class#getResourceAsStream()'的javadoc。 – 2013-03-25 23:24:25

回答

1

如果你有在戰爭文件的根文件夾中的XML文件,您可以在使用閱讀10用於上下文應用程序文件夾。

String contextPath = request.getSession().getServletContext().getRealPath("/"); 

以另一種方式,你可以使用context class loader in a multi-module environment

ClassLoader classloader = Thread.currentThread().getContextClassLoader() 
Document doc = db.parse(classloader.getResourceAsStream(contextPath+ "/db.xml")); 

在某些環境中,附加斜線是沒有必要的。

3

您需要使用getResourceAsStream()

try { 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = dbf.newDocumentBuilder(); 
     Document doc = db.parse(getClass().getResourceAsStream("db.xml")); 
    } catch (Exception ex) { 
     ex.printStackTrace(); 
     out.print("File Not Found!"); 
    } 
+0

它表示文件未找到... db.xml位於我的項目的根文件夾中,也位於類文件夾內......它是否正確? – 2013-03-25 23:36:12

+0

用「/db.xml」等其他路徑給它一下。試驗和錯誤會讓你無處不在... – 2013-03-25 23:40:45

+0

已經試過...不起作用 – 2013-03-25 23:45:09