`

解决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先读取,就没有问题。

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论
1 楼 smallsilver 2014-05-04  
,确实是这么回事,回头看看parse的方法,thanks!

相关推荐

    java.net.MalformedURLException异常的解决方法

    下面小编就为大家带来一篇java.net.MalformedURLException异常的解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    程设小学期(Java + Android)大作业

    图片加载问题:java.net.MalFormedURLException: no protocol,D/skia:---Failed to create image decoder with message 'unimplemented', gif动图之间的[&]格式问题 视频播放 detailed page中图片过大问题 整体...

    全面介绍单元测试.要进行充分的单元测试,应专门编写测试代码,并与产品代码隔离

    全面介绍单元测试: 这是一篇全面介绍单元测试的经典之作,对理解单元测试和Visual Unit很有帮助,作者老纳,收录时作了少量修改]

    java网络编程抓取指定网页信息--UrlHtml(java源码)

    import java.net.MalformedURLException; import java.net.URL; public class UrlHtml { @SuppressWarnings("deprecation") public static void main(String[] s) throws IOException{ try { URL ...

    Android中ImageView使用网络图片资源的方法

    本文实例讲述了Android中ImageView使用网络图片资源的方法。分享给大家供大家参考。具体如下: 很多时候我们不想把东西都放在APK里面,...import java.net.MalformedURLException; import java.net.URL; import androi

    数据库操作的单元测试

    4.1.1. 在运行测试用例的时候,出现org.dbunit.dataset.DataSetException: java.net.MalformedURLException at……………类似的异常? 1 4.1.2. 在运行测试用例的时候,出现SQLException,并且对应的sqlstate:23504,...

    通过HttpURLConnection获取SESSIONID

    import java.net.MalformedURLException; import java.net.URL; import java.util.List; import java.util.Map; public class HttpTest { private HttpURLConnection hc = null; private static final String ...

    跨项目调用webservice接口

    import java.net.MalformedURLException; import java.util.Properties; import java.util.Scanner; import org.codehaus.xfire.XFireFactory; import org.codehaus.xfire.client.XFireProxyFactory; import org....

    Android实现ListView异步加载图片的方法

    本文实例讲述了Android实现ListView异步加载图片的方法。分享给大家供大家参考。具体如下: ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源...import java.net.MalformedURLException; import

    java解析给定url

    import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator...

    Java用正则表达式如何读取网页内容

    学习java的正则表达式,抓取网页并解析HTML部分内容  ...import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import j

    Android 异步获取网络图片并处理导致内存溢出问题解决方法

    测试环境为Adnroid 2.1以上。 1.AndroidManifest.xml 权限配置: 添加互联网访问权限: 代码如下: &lt;uses android:name=”android.permission.INTERNET”&gt; 2.... import java.net.MalformedURLException; impo

    XFire 和spring完整集成实例

    import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.codehaus.xfire.client.XFireProxyFactory; import org.codehaus.xfire....

    StockJava:Java的库存类。 使用Yahoo Finance API

    股票Java说明:Java的库存类。 使用Yahoo Finance API 测试文件: import java.io.IOException;import org.json.simple.JSONObject;import java.util.*;public class StockTest {public static void main(String[] ...

    (java)xmlrpc.7z

    } catch (MalformedURLException e) { e.printStackTrace(); } config.setConnectionTimeout(60000); config.setReplyTimeout(60000); config.setEnabledForExceptions(true); XmlRpcClient rpc ...

    RMI 的全套使用

    import java.net.MalformedURLException; import java.rmi.server.UnicastRemoteObject; import common.zip.ZipClientSocketFactory; import common.zip.ZipServerSocketFactory; public final class RMIServer { ...

    带注释的Bootstrap.java

    import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.apache....

    Java精华(免费版)

    以java.net.URL类的构建器(constructor)为例,它的每一个构建器都会抛出MalformedURLException。MalformedURLException就是一种checked exception。设想一下,你有一个简单的程序,用来提示用户输入一个URL,然后...

    幻灯片java手动播放

    import java.net.*; import java.io.*; public class SR_Slider extends Frame implements ActionListener, WindowListener, Runnable { public static void main(String Pagli[]) { new SR_Slider(); } ...

    JAVA编写的图书馆管理系统

    import java.net.*; import java.io.*; import javax.swing.event.*; import javax.swing.border.*; import java.sql.*; import java.io.*; import java.net.*; import javax.swing.*; public class Java{ public ...

Global site tag (gtag.js) - Google Analytics