-2

在我的 Eclipse 项目中,我试图将 xml 文件解析为字符串列表以显示在 jsp 文件中。

我的解析器与这段代码完美配合:

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(file,handler) 代码行遇到这个问题,而且我有不知道如何解决它。任何帮助都会很棒!

4

1 回答 1

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)。

于 2013-06-28T03:14:44.297 回答