2012-05-02 30 views
0

我在可繪製文件夾中有一個XML文件。我想使用XML解析(sax解析)解析XML文件。
我曾經爲下面的代碼:使用sax解析從drawable-folder中的XML文件中獲取數據?

private void getDataFromFile(int mntFile) throws SAXException, IOException { 
     // TODO Auto-generated method stub 
     SAXParserFactory factory = SAXParserFactory.newInstance(); 
     System.out.println("in method"); 
     try { 
      saxParser = factory.newSAXParser(); 
     } catch (ParserConfigurationException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     DefaultHandler handler = new DefaultHandler() { 

     boolean id = false; 
     boolean name = false; 
     boolean dep = false; 


     public void startElement(String uri, String localName,String qName, 
        Attributes attributes) throws SAXException { 
      //System.out.println("in start"); 
      if (localName.equals("DOCTORID")) { 
       id = true; 
      } 

      if (localName.equals("NAME")) { 
       name = true; 
      } 

      if (localName.equals("DEAPRTMENT")) { 
       dep = true; 
      } 
     } 

     public void endElement(String uri, String localName, 
      String qName) throws SAXException { 
     } 

     public void characters(char ch[], int start, int length) throws SAXException { 

      if (id) { 
       id = false; 
      } 

      if (name) { 
       System.out.println("Name : " + new String(ch, start, length)); 
       mArryLstDoctorNames.add(new String(ch, start, length)); 
       Log.d("doctor","---"+mArryLstDoctorNames); 
       name = false; 
      } 

      if (dep) { 
       dep = false; 
      } 

     } 

     }; 
      saxParser.parse(R.drawable.myxml, handler); 
    } 

但這裏saxParser.parse(R.drawable.myxml, handler);是顯示編譯錯誤。
這是在SD卡上使用的XML文件的相同代碼。

回答

1

您不能將其存儲到可繪製文件夾,它是您的軟件包的一部分,將它存儲在其他地方,您的軟件包/數據或SD卡。
R.drawble.xml不使用輸入源。

首先你需要讀取文件,然後將它傳遞給一個字符串,之後你可以解析它。

這是怎麼了:

FileInputStream fis = openFileInput(yourfilepath); 
     InputStreamReader isr = new InputStreamReader(fis); 
     char[] inputBuffer = new char[reasonableLenght]; 
     // Fill the Buffer with data from the file 
     isr.read(inputBuffer); 
     String xml_data = new String(inputBuffer); 
    //then you can do 
saxParser.parse(new InputSource(new StringReader(xml_data)), handler); 
+0

我在繪製。如何xml文件來獲得文件的路徑? –

+0

你不能將它存儲到可繪製的文件夾,它的你的包的一部分,將它存儲在其他地方,你的包/數據或SD卡,並記得如果它已經幫助你選擇答案 –

+0

如何將我的文件從資產複製到/ data/data/packagesname /文件夾/動態 –