3

我的代码在声明处停在这里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 是要走的路,但它可能会使事情进一步复杂化。谢谢。

4

2 回答 2

4

您必须指定协议,如 http、ftp、文件等。在这里,您从 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()));
于 2013-05-17T17:09:36.560 回答
1

有效的 URL 以协议开头。Environment.getExternalStorageDirectory() 没有返回协议,它返回文件路径。您需要将文件协议添加到字符串的开头。

于 2013-04-16T03:23:16.340 回答