我正在使用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有关。
您怎么看?
答案 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);