android xml xml-parsing sax xmlreader

android - Pasar recurso XML a XMLReader



xml-parsing sax (3)

Creo que deberías poner el archivo en la carpeta raw o asset para usar el analizador SAX y luego usar el contexto leer ese archivo desde allí

Android - Leer el archivo de los activos http://www.javacodegeeks.com/2012/02/android-read-file-from-assets.html

Estoy tratando de pasar un archivo .xml de mi carpeta de res a un XMLReader para analizarlo en un objeto:

private void parseXML() { String parsedData = ""; try { Log.w("AndroidParseXMLActivity", "Start"); /** Handling XML */ SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); XMLReader xr = sp.getXMLReader(); QuestionXMLHandler myXMLHandler = new QuestionXMLHandler(); xr.setContentHandler(myXMLHandler); InputSource inStream = new InputSource(); Log.w("AndroidParseXMLActivity", "Parse1"); inStream.setCharacterStream(new StringReader(getResources().getXml(R.xml.questions).toString())); Log.w("AndroidParseXMLActivity", "Parse2"); xr.parse(inStream); Log.w("AndroidParseXMLActivity", "Parse3"); ArrayList<QuestionMaster> questionList = myXMLHandler.getQuestionsList(); for(int i=0;i<questionList.size();i++){ QuestionMaster question = questionList.get(i); parsedData = parsedData + "----->/n"; parsedData = parsedData + "Queston No: " + question.getQuestionNo() + "/n"; parsedData = parsedData + "QuestionText: " + question.getQuestionText() + "/n"; parsedData = parsedData + "CorrectAnswer: " + question.getQuestionText() + "/n"; parsedData = parsedData + "WrongAnswer1: " + question.getQuestionText() + "/n"; parsedData = parsedData + "WrongAnswer2: " + question.getQuestionText() + "/n"; parsedData = parsedData + "WrongAnswer3: " + question.getQuestionText() + "/n"; parsedData = parsedData + "Answered: " + question.isAnswered() + "/n"; parsedData = parsedData + "QuestionText: " + question.isAnsweredCorrectly() + "/n"; } Log.w("AndroidParseXMLActivity", "Done"); }catch (Exception e) { Log.w("AndroidParseXMLActivity",e ); } xmlOutput.setText(parsedData); } }

Estoy seguro de que es la línea:

inStream.setCharacterStream(new StringReader(getResources().getXml(R.xml.questions).toString()));

¿Podría alguien guiarme para pasar este archivo .xml a XMLReader ?

editar :

Cambiado a:

InputSource inStream = new InputSource(getResources().openRawResource(R.raw.questions));


getXml() devuelve una implementación de XmlPullParser , por lo que ya está configurado para ser analizado usando ese motor . Cambie su código existente para usar XmlPullParser lugar de SAX.


InputStream inStream = getResources().openRawResource(R.raw.questions); xr.parse(inStream);