Home Menu

Menu



Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 17/01/12, 16:32:22
Avatar de Afsoon
Afsoon Afsoon no está en línea
Miembro del foro
Mensajes: 225
 
Fecha de registro: may 2010
Mensajes: 225
Mencionado: 0 comentarios
Tagged: 0 hilos
XMLPull

Hola buenas, es una consulta muy rápida.
Tengo el parser hecho pero cuando hago el debug a la app para la lista que recibe el parser este me sigue manteniendo como "null", es decir, que no recibe nada y entonces que se supone que he hecho mal, yo caigo que es el InputStream cuando digo el archivo.
El archivo lo tengo creado con fileOpenOuput(), de hay que la ruta sea tan larga que veréis, creo que el fallo es hay porque el código dudo que este mal. La razón por la que pienso esto es porque lo hice con DOM hasta que vi que para XML grandes no es bueno en smartphones entonces ese sera mi caso y lo quite y lo con Pull que es lo que lo recomienda.
Una última duda, el array que obtengo de este parser se trata igual que la array normal o es un poco diferente porque con DOM me daba un array de size 0 y me era imposible de tratar, se que null no era pero no sabia como obtener nada por eso ya que estoy preguntando lo de Pull.

Aqui tenéis el código:
Parser
Código:
public List<TeachersData> parse(InputStream is){
		List<TeachersData> noticias = null;
		XmlPullParser parser = Xml.newPullParser();
		try {
			parser.setInput(is, null);
			int evento = parser.getEventType();
			TeachersData noticiaActual = null;
			while (evento != XmlPullParser.END_DOCUMENT)
			{
				String etiqueta = null;
				switch (evento)
				{
					case XmlPullParser.START_DOCUMENT:
						noticias = new ArrayList<TeachersData>();
					break;
					case XmlPullParser.START_TAG:
						etiqueta = parser.getName();
						if (etiqueta.equals("profesores"))
						{
							noticiaActual = new TeachersData();
						}
						else if (noticiaActual != null)
						{
							if (etiqueta.equals("nombre"))
							{
								noticiaActual.setNombre(parser.getAttributeName(parser.getAttributeCount()));
							}
							else if (etiqueta.equals("apellido"))
							{
								noticiaActual.setApellido(parser.getAttributeName(parser.getAttributeCount()));
							}
							else if (etiqueta.equals("despacho"))
							{
								noticiaActual.setUbicacion_del_departamento(parser.getAttributeName(parser.getAttributeCount()));
							}
							else if (etiqueta.equals("email"))
							{
								noticiaActual.setEmail(parser.getAttributeName(parser.getAttributeCount()));
							}
							else if (etiqueta.equals("asignatura"))
							{
								noticiaActual.setAsignatura(parser.getAttributeName(parser.getAttributeCount()));
							}
						} 
					break;
					case XmlPullParser.END_TAG:
						etiqueta = parser.getName();
						if (etiqueta.equals("profesores") && noticiaActual != null)
						{
							noticias.add(noticiaActual);
						}
					break;
				}
				evento = parser.next();
			}
	}
    catch (Exception ex){
        throw new RuntimeException(ex);
    }
		return noticias;
	}
Ejecutar el parser
Código:
InputStream is = openFileInput("/data/data/com.student/files/data.xml");
ReadInitXML rixml = new ReadInitXML();
List<TeachersData> td = rixml.parser(is);

Última edición por Afsoon Día 21/01/12 a las 12:46:16
Responder Con Cita


  #2  
Viejo 19/01/12, 20:31:19
Avatar de Afsoon
Afsoon Afsoon no está en línea
Miembro del foro
Mensajes: 225
 
Fecha de registro: may 2010
Mensajes: 225
Mencionado: 0 comentarios
Tagged: 0 hilos
A nadie se le ocurre nada para arreglarlo, porque no se me ocurre nada sino lo pongo en StackOverflow porque era mi ultimo recurso para ponerlo.
Porque el maldito XML me están tocando un poco las pe****s, como es la primera vez que uso XML y que con DOM me leyera el archivo y con Pull no, porque la prueba esta en el array que es null.

Última edición por Afsoon Día 19/01/12 a las 21:01:27
Responder Con Cita
  #3  
Viejo 21/01/12, 12:43:35
Avatar de Afsoon
Afsoon Afsoon no está en línea
Miembro del foro
Mensajes: 225
 
Fecha de registro: may 2010
Mensajes: 225
Mencionado: 0 comentarios
Tagged: 0 hilos
Arreglado, tras leer el log una y otra vez y que no lo sacaba, ya vi el problema. Se encontraba en la estructura del XML porque como tenia la antigua que estaba bien, no pense ese problema hasta que vi el nuevo y estaba deformado. El Array si me coge los datos y me los muestras. De ahora en adelante a usar solo XMLPull en Android
Responder Con Cita
  #4  
Viejo 21/01/12, 13:50:06
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Yo uso SAX, y la verdad es que está bastante bien. Aunque al final vienen a ser todos practicamente iguales, es acostumbrarte a usar uno y dominarlo.
Responder Con Cita
  #5  
Viejo 21/01/12, 17:51:24
Avatar de Afsoon
Afsoon Afsoon no está en línea
Miembro del foro
Mensajes: 225
 
Fecha de registro: may 2010
Mensajes: 225
Mencionado: 0 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Yo uso SAX, y la verdad es que está bastante bien. Aunque al final vienen a ser todos practicamente iguales, es acostumbrarte a usar uno y dominarlo.
Pero al parecer el que recomienda en varios sitios y uno de ellos es StackOverflow, recomienda el uso de XMLPull en Android porque a diferencia de DOM no se carga en memoria y de Sax que no me acuerdo. Además si usas archivos muy grandes con SAX y DOM iria lento el movil y yo usare archivos grandes porque es un programa recordatorio en los estudios.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 19:18:57 (GMT +2)

Cookies
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007