未知协议:c(JDOM a SAXBuilder)

时间:2011-08-30 13:03:36

标签: java parsing exception sax jdom

我正在使用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 个答案:

答案 0 :(得分:10)

我的第一个猜测是你正在加载一个本地文件,例如:“c:/mylocalfile.xml”

但此网址不包含协议,例如http://ftp://file://

尝试file:// c:/mylocalfile.xml

答案 1 :(得分:4)

实际上,我的文件夹名称中有空格导致了这个错误。即使在本地文件的情况下,JAVA也能够理解协议类型。

答案 2 :(得分:0)

我的文件名中有一个空格

我使用InputStream而不是文件名解决了它:

工作的:

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

崩溃:

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