解决java.net.MalformedURLException: unknown protocol问题

最近在写一个工具时,java 解析Xml时,出现下面异常:

java.net.MalformedURLException: unknown protocol: e
 at java.net.URL.<init>(Unknown Source)
 at java.net.URL.<init>(Unknown Source)
 at java.net.URL.<init>(Unknown Source)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
 at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
 at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)

 

发现原因是xml文件放置在中文路径下,因为如果是英文路径就没有问题了。

 

在上网找半天也没有发现好的解决方案。在同事点拔下,将中文路径下文件先读取,放在英文路径下,再使用就没有问题。

 

但是对于我的这个程序,我找到好方法:

 

之前代码:

 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder;
  builder = factory.newDocumentBuilder();
  Document document = builder.parse(xmlPath);\\直接将路径名给builder.

 

但是如果路径有中文就会报上面的异常;

 

修改后代码:

 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  DocumentBuilder builder;
  builder = factory.newDocumentBuilder();
  
  File file=new File(xmlPath);  //将文件读取,这样路径如果有中文一样可以正常读取
    
  Document document = builder.parse(file); //将file传给DocumentBuilder,

 

没有上面异常可以正常读取。

 

我认为DocumertBuilder这个类对文件的读取可能不够全面吧,所以无法处理读取中文路径下的文件。如果用File先读取,就没有问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值