Android用DocumentBuilder解析XML文件抛出FileNotFoundException异常
问题原因
你复制的是开发环境下的本地项目源码路径,Android应用安装到设备/模拟器后,APK内的assets目录文件不会以独立磁盘文件的形式存在于这个路径下,直接通过File读取必然找不到文件。
解决方案
使用Android提供的AssetManager读取assets目录下的文件流,再传给DocumentBuilder解析即可,正确代码如下:
try { DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // 通过AssetManager获取assets下文件的输入流 InputStream inputStream = getAssets().open("local_markers.xml"); Document document = documentBuilder.parse(inputStream); // 后续解析逻辑保持不变 // 读取完成后关闭流 inputStream.close(); } catch (ParserConfigurationException ex) { ex.printStackTrace(System.out); } catch (SAXException ex) { ex.printStackTrace(System.out); } catch (IOException ex) { ex.printStackTrace(System.out); }
注意事项
- 如果是在非Activity类中调用该逻辑,需要传入Context对象,再调用
context.getAssets()获取AssetManager实例 - 确保
local_markers.xml文件确实放置在项目的src/main/assets目录下,文件名没有拼写错误、大小写匹配(Android文件系统对大小写敏感)
内容的提问来源于stack exchange,提问作者Oposssum
相关产品推荐
相关产品推荐

