0

我是 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)

4

4 回答 4

2

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

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

如果您想使用另一个自定义文件夹:

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

于 2013-07-15T13:06:40.550 回答
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");
于 2013-07-15T13:12:30.670 回答
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()

于 2013-07-15T13:02:45.927 回答
1

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

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

Document document = builder.parse(new FileInputStream(fis));
于 2013-07-15T13:05:00.810 回答