我的代码在sourceURL
声明处停止,并抛出异常:
java.net.MalformedURLException
:未找到协议:mnt / sdcard / Android / data ...
URL sourceUrl = new URL(Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml");
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
这里的情况是否是某些种类的URL-String的错误转换?如果是这样,是否有一个共同的解决方法? 我听说SAX是要走的路,但它可能会使事情进一步复杂化。感谢。
答案 0 :(得分:4)
你必须指定http,ftp,file等协议。在这里你从sdcard访问它,所以在整个路径之前它是"file://"
。
现在使用此
修改您的代码段URL sourceUrl = new URL("file://" + Environment.getExternalStorageDirectory() + "/Android/data/com.esentral.testdev/"+"temp2.xml");
MyXMLHandler myXMLHandler = new MyXMLHandler();
xr.setContentHandler(myXMLHandler);
xr.parse(new InputSource(sourceUrl.openStream()));
答案 1 :(得分:1)
有效的URL以协议开头。 Environment.getExternalStorageDirectory()没有返回任何协议,它返回文件路径。您需要将文件协议添加到字符串的开头。