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