FileNotFoundException при чтении .xml файла для парсинга

Я пишу программу в Java, где я читал в данных из XML-файла и анализирую их. Файл импортируется в папку под названием "Ресурсы" в src каталоге моего проекта. Я использую 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, когда файл там. Спасибо за справку.

5
задан ericso 4 April 2010 в 22:09
поделиться

1 ответ

В DocumentBuilder.parse (String) аргумент интерпретируется как URI, и в этом случае он будет относительным URI (строка, которую вы ему даете, не является "полным "URI). Относительно к на данный момент немного двусмысленно, без дополнительной информации о вашей настройке. Среда выполнения будет интерпретировать это как относительное к что-то , но здесь не ясно, что это что-то такое.

Вы получите более надежные результаты, используя один из других методов parse , например parse (File) или parse (InputStream) . В каждом случае нет двусмысленности в том, что вы просите его проанализировать.

Если вы решите сначала создать объект File (для перехода к синтаксическому анализу позже), то у вас возникнет более управляемая проблема, заключающаяся в том, чтобы убедиться, что этот файл существует (используя File.exists () и так далее). Если вы не можете зайти так далеко, то ваша проблема не в DocumentBuilder или DOM, а в основных путях к файлам. Помните, что если вы используете относительные пути к файлам (например, новый файл («resources / majors_xml_db.xml») ), то это будет разрешено относительно рабочего каталога процесса. Работает это или нет, зависит от того, как вы запускаете свою программу.

6
ответ дан 14 December 2019 в 13:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: