2013-07-15 92 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");