2013-07-15 59 views
0

我是Android新手,试图获取本地XML文件并获取数据并显示它。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

我知道代码有问题,但仍然是最后一个m烬是好的:)我只是想看到代码工作莫名其妙。 – albatross

+0

你将不得不将它放在assests文件夹中。 – Raghunandan

+0

我应该如何使用它?而在地狱资产文件夹:)下建立res我创建的文件夹并命名它的资产。 – albatross

回答

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()

+0

我改变这条线仍然不工作:( Document document = builder.parse(getAssets()。open(“words.xml”)); – albatross

+0

错误是什么? – Flynn81

+0

文件没有找到异常我喜欢的答案,但说实话他们都没有工作:(仍然是相同的错误 – albatross

1

把你的XML文件放在res/raw(如果原始文件夹不存在res下创建它)文件夹(可以说它的words.xml)。之后这样调用它:

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

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

您不需要在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); 

注:你甚至可以在安装应用程序

2)RES /生文件夹

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

3)RES /资产文件夹

后编辑XML文件
InputStream is = (InputStream) getAssets().open("words.xml");