3

我正在使用带有 SAXBuilder 的 JDOM 来解析 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 有关。

你怎么看 ?

4

3 回答 3

10

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

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

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

于 2011-08-30T13:08:29.857 回答
4

实际上,我的文件夹名称中有空间导致此错误。即使是本地文件,JAVA 也有能力理解协议类型。

于 2012-07-25T05:20:13.647 回答
0

我的文件名中有一个空格

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

作品:

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

崩溃:

Document doc = new SAXBuilder().build(filename);
于 2015-07-28T14:22:46.487 回答