最近在梳理自己自己的知识体系结构,在做Jdom解析xml的时候出现了这个异常
Exception in thread "main" java.net.MalformedURLException: unknown protocol: cat java.net.URL.(URL.java:574)at java.net.URL.(URL.java:464)at java.net.URL.(URL.java:413)at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)at org.jdom.input.SAXBuilder.build(SAXBuilder.java:891)at xml.TestJdom.parseAndUpdateXML(TestJdom.java:32)at xml.TestJdom.main(TestJdom.java:23)
发现原因是xml文件不是放置在纯英文路径下(有空格或中文),因为如果是纯英文路径就没有问题了。
所以将
Document document = sb.build(path);
改为
File file =new File(path);
Document document = sb.build(file);
然后就没有上面异常可以正常读取。