XMLResourceParser, no estoy seguro de cómo leer el XML que tengo

He aquí un ejemplo de mi archivo XML:

<?xml version="1.0" encoding="utf-8"?> <assurances> <assurance hasReference="true"> <message>You're Awesome!</message> <reference>Genesis 1:26</reference> </assurance> <assurance hasReference="true"> <message>Your Wonderfull!</message> <reference>Genesis 1:26</reference> </assurance> </assurances> 

Estoy usando código como este para tratar de recuperarlo:

 int eventType = -1; while(eventType != XmlResourceParser.END_DOCUMENT) { XmlResourceParser assurances = getResources().getXml(R.xml.assurances); String name = assurances.getText(); Log.d(TAG, name); try { if (assurances.getEventType() == XmlResourceParser.START_TAG) { String s = assurances.getName(); if (s.equals("assurance")) { String strMessage = assurances.getAttributeValue(null, "message"); String strReference = assurances.getAttributeValue(null, "reference"); Log.d(TAG, strMessage); Log.d(TAG, strReference); } } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

No es obtener los datos y no estoy seguro de dónde ir desde aquí.

No es necesario utilizar el método getAttributeValue en su lugar, necesita utilizar el método getText (). He hecho algunos cambios en su código por lo que si utiliza el código a continuación, entonces funcionará bien:

 int eventType = -1; while(eventType != XmlResourceParser.END_DOCUMENT) { XmlResourceParser assurances = getResources().getXml(R.xml.assurances); String name = assurances.getText(); Log.d(TAG, name); try { if (assurances.getEventType() == XmlResourceParser.START_TAG) { String s = assurances.getName(); if (s.equals("assurance")) { assurances.next(); /// moving to the next node if(assurances.getName() != null && assurances.getName().equalsIgnoreCase("message")){ String strMessage = assurances.getText(); ///to get value getText() method should be used assurances.next(); ///jumping on to the next node String strReference = assurances.getText(); ////similar to above } Log.d(TAG, strMessage); Log.d(TAG, strReference); } } } catch (XmlPullParserException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

Espero que esto le ayudará en el camino. Saludos

 public static void main(String[] args) { try { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new File("c:\\_work\\test.xml")); //get nodes by name NodeList nl = doc.getElementsByTagName("assurance"); int nbrOfElements = nl.getLength(); for (int i = 0; i < nbrOfElements; i++) { Element e = (Element) nl.item(i); System.out.print(e.getTagName()); System.out.print(":"); System.out.println(e.getTextContent()); } } catch (Exception ex) { Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); } } 
  • Archivo de preferencias del usuario vs Archivo de preferencias de la aplicación
  • Post datos UTF-8 codificados en el servidor pierde ciertos caracteres
  • Permisos de usuario de Android para acceder a Internet
  • LibGDX leer archivo XML
  • Vista emergente de Android No funciona
  • ¿Cómo puedo generar recursos XML en tiempo de ejecución en Android?
  • Uso de XMLBeans en Android
  • Android: Configurar la altura del botón en XML en función de su ancho
  • ¿Por qué la gravedad no funciona cuando se aplica al diseño relativo?
  • Nuevo patrón de diseño de la actividad de Android Studio content_main.xml
  • Biblioteca Java para consumir / manipular Sharepoint 2013 Resto OData Resultado XML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.