gpt4 book ai didi

java - Android XML 解析错误 - "Couldn' t 打开 .../directory/container.xml"

转载 作者:行者123 更新时间:2023-11-29 06:14:02 25 4
gpt4 key购买 nike

我正在尝试解析位于我的 Android 设备上的 sdCard 上的 XML 文件。

这段代码-

SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
sp.parse("/mnt/sdcard/Speedr/pg55/META-INF/container.xml", xmlHandler);

输出这个错误-

Couldn't open /mnt/sdcard/Speedr/pg55/META-INF/container.xml

Caused by: java.net.MalformedURLException: Protocol not found: /mnt/sdcard/Speedr/pg55/META-INF/container.xml

为了简单起见,我更改了 sp.parse() 的位置,但这正是实际代码中传递给该方法的内容。我还去掉了应该围绕它的 try/catch 括号。

该文件绝对存在,如果我在我的手机或计算机上浏览它,我可以看到它并且位置也是正确的,因为它没有给我一个 FileNotFound 错误。

我最初是用独立的 Java 构建这段代码,并一直试图在 Android 设备上实现它,但遇到了这个错误。错误日志确实没什么用。

如果我能从这里的任何人那里得到任何帮助,我将不胜感激。

最佳答案

请确保您的 androidManifest.xml 中包含以下权限,以防您想要修改 xml 或保存其他 xml:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

并将您的代码更改为:

final File xml = new File(Environment.getExternalStorageDirectory().
getAbsolutePath() + "Speedr/pg55/META-INF/container.xml");
sp.parse(xml, xmlHandler);

这样您就可以将文件传递给解析器,因此您无需指定 file:// 协议(protocol)。
尽量不要使用静态路径。外部存储路径根据设备而变化。
使用 Environment.getExternalStorageDirectory() 是很好的做法。

您可能还想检查 xml 文件是否存在等,但基本上这是它应该工作的方式。

请参阅this article about using external storage在 Android 开发者上,用于进一步检查存储状态等。

关于java - Android XML 解析错误 - "Couldn' t 打开 .../directory/container.xml",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5760435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com