【问题标题】:Android XML file parsing file not found exceptionAndroid XML文件解析文件未找到异常
【发布时间】:2013-07-15 12:57:53
【问题描述】:

我是 Android 新手,正在尝试获取本地 XML 文件并获取数据并显示它。

这是我的代码:

public String GetXmlData()
{
    DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = null;
    try
    {
        builder = builderFactory.newDocumentBuilder();
        InputStream is = getAssets().open("words.xml");
        Document document = builder.parse(new FileInputStream("C:\\Users\\Ocean\\AndroidStudioProjects\\Deneme1Project\\Deneme1\\build\\res\\assets\\words.xml"));
        Element rootElement = document.getDocumentElement();

        NodeList nodes = rootElement.getChildNodes();

        for(int i=0; i<nodes.getLength(); i++){
            Node node = nodes.item(i);

            if(node instanceof Element)
            {
                //a child element to process
                Element child = (Element) node;
                title = child.getAttribute("title");
                String author= child.getAttribute("author");
                String year= child.getAttribute("year");
            }
        }
        return title;
    }
    catch (Exception e)
    {
        e.printStackTrace();
        return e.toString();
    }

}

我的第一个问题应该把这个 XML 文件放在哪里?在 res 我创建了文件夹并将其命名为 assets 在其中放置我有 rs 和 r 文件夹:S 找不到文件异常(文件在那里:P)

【问题讨论】:

  • 我知道代码有问题,但最后一个成员仍然很好 :) 我只是想看看代码能以某种方式工作。
  • 你必须把它放在assets文件夹中。
  • 我应该如何使用它?在构建资源下的地狱资产文件夹:) 我创建了文件夹并将其命名为资产。
  • assets 文件夹位于您的项目/projectname/assests/myxml.xml 下。它应该在项目文件夹下。

标签: android xml filenotfoundexception file-not-found


【解决方案1】:

您不需要在 res 文件夹中创建一个名为 assets 的文件夹,因为默认项目中已经有一个 assets 文件夹。如果您将文件放在默认资产文件夹中,您可以通过以下方式调用:

getAssets().open("words.xml");

如果您想使用其他自定义文件夹:

getAssets().open("myfiles/words.xml");

【讨论】:

    【解决方案2】:

    您可以将您的 XML 文件放在下面提到的任何位置:

    1) sdcard , 并访问它

    File wordsXML = new File(Environment.getExternalStorageDirectory() + "/SomeFolderName/" + "words.xml");
    FileInputStream fis = new FileInputStream(wordsXML);
    

    注意:你可以在安装应用程序后编辑 xml 文件

    2) res/raw 文件夹

    FileInputStream fis =(FileInputStream) getResources.openRawResource(R.raw.words);
    

    3) res/assets 文件夹

    InputStream is = (InputStream) getAssets().open("words.xml");
    

    【讨论】:

      【解决方案3】:

      这指向您的本地计算机,当您部署无法引用的 APK 时。

      Document document = builder.parse(new FileInputStream("C:\\Users\\Ocean\\AndroidStudioProjects\\Deneme1Project\\Deneme1\\build\\res\\assets\\words.xml"));
      

      试试吧:

      getAssets().open("words.xml");
      

      words.xml 在您的资产目录中的位置。这将从Activity 工作,或者如果您有Context,您可以在上下文中调用getAssets(),即context.getAssets()

      【讨论】:

      • 我像这样更改了这一行仍然无法正常工作:( Document document = builder.parse(getAssets().open("words.xml"));
      • 文件未找到异常 我喜欢这些答案,但老实说它们都没有工作:( 仍然是同样的错误
      【解决方案4】:

      将您的 xml 文件放入 res/raw(如果在 res 下不存在 raw 文件夹,请创建它)文件夹(让我们说它的 words.xml)。之后像这样调用它:

      FileInputStream fis =(FileInputStream) getResources.openRawResource(
          R.raw.words);
      
      Document document = builder.parse(new FileInputStream(fis));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-29
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        • 2019-03-29
        • 2019-06-26
        相关资源
        最近更新 更多