2013-06-27 38 views
-2

在我的Eclipse項目中,我試圖將xml文件解析爲字符串列表以顯示在jsp文件中。無法將saxParser指向文件目錄

我的解析器使用此代碼工作完美:根據需要

public class XMLReader{ 
    public static void main(String [] args){ 
     System.out.println(getXML()); 
    } 
    public static String getXML(){ 
     try{ 
      SAXParserFactory factory = SAXParserFactory.newInstance(); 
      SAXParser saxParser = factory.newSAXParser(); 
      XMLHandler handler = new XMLHandler(); // class I created extending DefaultHandler 
      saxParser.parse("file.xml",handler); 
      urls = handler.getXMLList(); 
     } 
     catch(Exception e){ 
      e.printStackTrace(); 
     } 
     return urls.toString(); 
    } 
} 

字符串列表打印到我的控制檯。 但是當我嘗試重寫方法返回一個字符串,這樣我可以在我的JSP文件中使用它:

public class XMLReader{ 
    public String returnXML(){ 
     return getXML().toString(); 
    } 
    public List<String> getXML(){ 
     ... 
    } 
} 

我收到了java.io.FileNotFoundException。在我的控制檯中,它顯示Eclipse正試圖在包含我的eclipse.exe的文件夾中找到文件,而不是在我的工作區文件夾中。我一直在網上搜索幾個小時,但我不知道是什麼原因導致在不同的文件夾中查找。我不知道如果使方法非靜態或使用jsp文件導致文件路徑改變,但我只遇到這個問題與我的saxParser.parse(文件,處理程序)代碼行,我有不知道如何解決它。任何幫助將是偉大的!

+0

您的代碼如下所示: catch(Excdeption e){ 因此,您的解析器顯然不適用於此代碼。請張貼實際的代碼。 –

+0

@EvanKnowles有幾個錯別字...感謝注意。解析器不會與代碼一起工作,當我嘗試返回一個String而不是執行System.out.println時,它會停止工作。 –

+0

您的代碼不會顯示'file'的聲明,或者文件名的設置方式。這些事情可能很重要。 –

回答

0

我想你只需要指定XML文件的完整路徑。

如果你打電話給SAXParser.parse(String,DefaultHandler),Javadoc說String是一個URI,所以對於一個本地文件,它應該被指定爲"file://drive/directory/file.xml",使用正斜槓作爲目錄分隔符而不管平臺。

否則,您可以創建一個File實例,該實例允許您以平臺相關的方式指定文件路徑(例如,在Windows中使用反斜槓),並致電SAXParser.parse(File,DefaultHandler)

您可能需要動態確定Eclipse工作區文件夾的位置,如果這是文件的位置。我不知道該怎麼做,但應該有辦法。

最後一個建議:命名類「XMLReader」可能有點冒險歧義,因爲存在具有相同名稱(org.xml.sax.XMLReader)的通用接口。

相關問題