Я использую JDOM с SAXBuilder для анализа файлов XML, и у меня проблема с файлом, который выдает эту ошибку:

java.net.MalformedURLException: unknown protocol: c
    at java.net.URL.<init>(URL.java:574)
    at java.net.URL.<init>(URL.java:464)
    at java.net.URL.<init>(URL.java:413)
    at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
    at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
    at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
    at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
    at com.foo.moo.MyClass.getValues(MyClass.java:321)

А строка такая:

Document document = null; 
document = sxb.build(files.elementAt(i)); // This one

Проведя небольшое исследование в Интернете, я думаю, что ошибка связана с Java 1.6.

Как вы думаете ?

3
Wassim AZIRAR 30 Авг 2011 в 17:03

3 ответа

Лучший ответ

Сначала я предполагаю, что вы загружаете локальный файл, например: "c: /mylocalfile.xml"

Но этот URL не содержит протокола, например http://, ftp:// или file://

Попробуйте файл: // c: /mylocalfile.xml

10
Kennet 30 Авг 2011 в 13:08

На самом деле у меня было место в имени моей папки, которое вызвало эту ошибку. Даже в случае локальных файлов JAVA может понимать типы протоколов.

4
Prabakaran 25 Июл 2012 в 05:20

В имени моего файла был пробел

Я решил это, используя InputStream вместо имени файла:

Работает:

fis = new FileInputStream(filename);
Document doc = new SAXBuilder().build(fis);

Вылетает:

Document doc = new SAXBuilder().build(filename);
0
AlexWien 28 Июл 2015 в 14:22