Android XML文件解析文件未找到异常

时间:2013-07-15 12:57:54

标签: android xml filenotfoundexception file-not-found

我是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里面我创建了文件夹并将其命名为资产放入其中我有rs和r文件夹:S文件未找到异常(文件在那里:P)

4 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分: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");

答案 2 :(得分:1)

这指向您的本地计算机,当您部署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()

答案 3 :(得分:1)

将您的xml文件放在res / raw(如果在res create it下不存在raw文件夹)文件夹(假设它的words.xml)。之后调用它:

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

Document document = builder.parse(new FileInputStream(fis));