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

Respuesta
 
Herramientas
  #1  
Viejo 17/01/12, 16:32:22
Array

[xs_avatar]
Afsoon Afsoon no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 225

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
Array

[xs_avatar]
Afsoon Afsoon no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 225

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
Array

[xs_avatar]
Afsoon Afsoon no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 225

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
Array

[xs_avatar]
kriogeN kriogeN no está en línea
Colaborador/a
· Votos compra/venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Tu operador: Vodafone
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
Array

[xs_avatar]
Afsoon Afsoon no está en línea
Miembro del foro
 
Fecha de registro: may 2010
Mensajes: 225

 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   Portal | Indice > Todo sobre Android > Programación y Desarrollo para Android



Hora actual: 00:07:06 (GMT +2)



User Alert System provided by Advanced User Tagging (Lite) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.

Contactar por correo / Contact by mail / 邮件联系 /