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 24/03/12, 11:48:30
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Uso de SAX

Código:
<sitios>
  <item>
     <nombre>Zona de Vuelo 1</nombre>
    <ciudad>Cartagena</ciudad>   
    <comunidad>Murcia</comunidad>
    <zona>1</zona>
    <link>www.cartagena.es</link>
  </item>
  <item>
    <nombre>Zona de Vuelo 2</nombre>   
    <ciudad>Pamplona</ciudad>
    <comunidad>Navarra</comunidad>
    <zona>2</zona>
    <link>www.pamplona.es</link>
  </item>
  <item>
     <nombre>Zona de Vuelo 3</nombre>
     <ciudad>Arcos de la frontera</ciudad>
     <comunidad>Andalucia</comunidad>
     <zona>3</zona>
     <link>www.arcosdelafrontera.es</link>
  </item>
</sitios>
Tengo este xml y lo estoy parseando con SAX simplificado. Tengo una pregunta como puedo hacer para solo "coger" los items donde su comunidad sea una específica.

Muchas gracias, un saludo.

Última edición por monchyrcg Día 24/03/12 a las 18:06:49
Responder Con Cita


  #2  
Viejo 24/03/12, 12:34:15
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
Si usas una clase que hereda de un DefaultHandler para que te haga el "parseo" podrías hacer mas o menos esto:

En startElement si el Tag es "Item" inicializas las variables de instancia nombre, ciudad, comunidad, zona y link. Aquí también tendrías que activar banderas según el Tag, para que characters la procese.

En characters es fácil, según la bandera que esté activada, que ya lo has hecho en startElement, asignas el texto a la variable adecuada.

En endElement tendrías que bajar todas las banderas, para que startElement suba la bandera adecuada cuando le toque. Además aquí es donde harías lo que estás buscando, si el Tag que estás cerrando es "Item" tendrías que comprobar el valor de la comunidad, si es la que buscas la añades a tus resultados, si no lo es sigues procesando.

Espero que te haya quedado claro, si no puedo escribirte el código.
Responder Con Cita
  #3  
Viejo 24/03/12, 13:07:01
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Muchas gracias ante todo por tu rápida contestación.

Uso SAX simplificado no se si se me ha olvidado comentarlo en el primer post. Por lo tanto la clase que hace el parseo no hereda de nada. Aun así si me puedes pasar el código que tu dices para verlo y si me conviene adaptarlo te lo agradecería mucho.

Muchas gracias un saludo.
Responder Con Cita
  #4  
Viejo 24/03/12, 14:04:45
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
Echale un vistazo a esta página que explica muy bien como usar un DefaultHandler para tratar ficheros XML mediante SAX:

http://www.sgoliver.net/blog/?p=1542

Ya con eso y lo que te he dicho en el anterior post lo verás muy claro, además te recomiendo usar este método por 2 motivos:

1) Es 100% Java por lo tanto te funcionará también con cualquier otro sistema Java, por ejemplo Blackberry para el caso de que quieras portar tu aplicación.

2) El sistema que tiene IOS para administrar ficheros XML es practicamente idéntico a este (la variación es muy pequeña, a partir de un Handler escrito a partir de un DefaultHandler portarlo a IOS no te lleva más de 5 minutos)

Yo tengo hecho un programa en sus 3 versiones (Android, Blackberry e IOS) que su comunicación con una web se basa en el intercambio de ficheros XML y cada vez que tengo que añadir un servicio nuevo sólo tengo que hacerlo para Android y portarlo a los otros 2 no me supone casi nada de tiempo.
Responder Con Cita
  #5  
Viejo 24/03/12, 14:30:26
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Lo intentare con un DefatultHandler, acabo de probarlo con DOM y tampoco se como hacerlo.

He probado estos dos primeros ya que es más fácil de usar. En una única clase lo haces todo y a mi me gusta más.

Con SAX normal he hecho yo una pequeña app para leer xml pero nunca he intentado hacer lo que he puesto arriba.
Responder Con Cita
  #6  
Viejo 24/03/12, 15:07:54
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Bueno pues me hace el parseo igual de bien que con SAX simplificado y que con DOM. Pero ahora como hago solo coger los datos que quiero???
Responder Con Cita
  #7  
Viejo 24/03/12, 18:06:28
Avatar de monchyrcg
monchyrcg monchyrcg no está en línea
Miembro del foro
Mensajes: 384
 
Fecha de registro: sep 2011
Localización: Cartagena
Mensajes: 384
Modelo de smartphone: LG Optimus Black
Versión de ROM: v10d
Tu operador: Orange
Mencionado: 0 comentarios
Tagged: 0 hilos
Solucionado he seguido tus consejos kriogeN. Muchas gracias
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: 07:35:56 (GMT +2)

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