【问题标题】:Android throws java.io.FileNotFoundException when trying to parse path to documentBuilderAndroid 在尝试解析 documentBuilder 的路径时抛出 java.io.FileNotFoundException
【发布时间】:2021-11-23 22:04:32
【问题描述】:

所以我尝试使用谷歌地图的标记选项读取 xml 文件并将其解析为 Android Studio 中的数组:

try {
        DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();

        Uri path = Uri.fromFile(new File("src/main/assets/local_markers.xml"));
        
        Document document = documentBuilder.parse(path.toString());

        //parsing

    } catch (ParserConfigurationException ex) {
        ex.printStackTrace(System.out);
    } catch (SAXException ex) {
        ex.printStackTrace(System.out);
    } catch (IOException ex) {
        ex.printStackTrace(System.out);
    };

它抛出 java.io.FileNotFoundException: /src/main/assets/local_markers.xml (No such file or directory) 并且数组只是被空字符串填充。

我尝试了很多不同的方法将文件解析为 documentBuilder,但没有任何改变。文件路径是 100% 正确的,因为我使用 Android Studio“复制路径”选项复制了它。

【问题讨论】:

  • 资产是开发机器上的一个文件。它不是设备上的文件。使用 AssetManager 及其 open() 方法在您的资产 (open("local_markers.xml")) 上获取 InputStream

标签: java android android-studio xml-parsing


【解决方案1】:

尝试使用 AssetManager:

AssetManager manager = getAssets();
InputStream stream;

try {

    stream = manager.open("local_markers.xml");
    Document document = parser.getDocument(stream);
} catch (ParserConfigurationException ex) {
    ex.printStackTrace(System.out);
} catch (SAXException ex) {
    ex.printStackTrace(System.out);
} catch (IOException ex) {
    ex.printStackTrace(System.out);
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    相关资源
    最近更新 更多