gpt4 book ai didi

java - 读取 .xml 文件进行解析时出现 FileNotFoundException

转载 作者:搜寻专家 更新时间:2023-10-31 19:58:52 26 4
gpt4 key购买 nike

我正在用 Java 编写程序,从 XML 文件中读取数据并对其进行解析。该文件被导入到我项目的 src 目录中名为“Resources”的文件夹中。我正在使用 Eclipse。当我运行该程序时,出现以下错误:

java.io.FileNotFoundException: /Users/thechiman/Dropbox/introcs/PSU SOC Crawler/resources/majors_xml_db.xml (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:106)
at java.io.FileInputStream.<init>(FileInputStream.java:66)
...

相关代码在这里:

private void parseXML() {
//Get a factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

try {
//Use factory to get a new DocumentBuilder
DocumentBuilder db = dbf.newDocumentBuilder();

//Parse the XML file, get DOM representation
dom = db.parse("resources/majors_xml_db.xml");
} catch(ParserConfigurationException pce) {
pce.printStackTrace();
} catch(SAXException se) {
se.printStackTrace();
} catch(IOException ioe) {
ioe.printStackTrace();
}
}

我不明白为什么当文件存在时我会收到 FileNotFoundException。感谢您的帮助。

最佳答案

DocumentBuilder.parse(String) ,该参数被解释为一个 URI,在本例中,它将是一个相对 URI(您给它的字符串不是“完整”URI)。在这一点上,它相对于 是什么有点模棱两可,没有关于您的设置的更多信息。运行时会将它解释为相对于某物,但这里并不清楚那是什么。

使用其他parse 方法之一,例如parse(File),您将获得更可靠的结果。或 parse(InputStream) .在每种情况下,您要求它解析的内容都没有歧义。

如果您决定首先构造一个File 对象(稍后传递给parse),那么您将面临一个更易于管理的问题,即确保该文件存在(使用File.exists() 等等)。如果您做不到那么远,那么您的问题不在于 DocumentBuilder 或 DOM,而在于基本文件路径。请记住,如果您使用相对文件路径(例如 new File("resources/majors_xml_db.xml")),那么这将相对于进程的工作目录进行解析。它是否有效取决于您启动程序的方式。

关于java - 读取 .xml 文件进行解析时出现 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576064/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com