我是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)
答案 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));