Análisis de archivos XML grandes utilizando el analizador SAX (salte algunas líneas / etiquetas)
Actualmente estoy desarrollando una aplicación que recupera datos de Internet usando SAX. Lo usé antes para analizar archivos XML simples como Google Weather API. Sin embargo, los sitios web que estoy interesado en tomar el análisis al siguiente nivel. La página es enorme y parece desordenada. Sólo necesito recuperar algunas líneas específicas; El resto no es útil para mí.
¿Es posible omitir esas líneas / etiquetas inútiles, o tengo que ir paso a paso?
- Considere la posibilidad de agregar android: paddingStart = "25dp" para soportar mejor layouts de derecha a izquierda Error
- No puedo desplazar mi diseño en multi-ventana en Nougat 7.0
- Android: conflicto de ID cuando se crean 3 pestañas o más
- Appcompat res values-v21 Los errores de themes_base en eclipse no desaparecen
- Android: incluye un xml en otro xml
- Mejor editor de diseño XML de Android que el de Eclipse
- ImageViews en LinearLayout redondeado
- ¿Cómo agregar efecto de rizo y tener fondo personalizado en el botón en android?
- Android.database.sqlite.SQLiteException: no hay tal columna
- Imagen de estiramiento en la imagen para ajustar la pantalla en xml
- Android TextView SingleLine campo oculta texto largo
- Los colores de Android no funcionan en mi dispositivo físico
- Cómo poner un botón entre dos diseños
Me gustan los comunes-digestor. Le permite especificar reglas contra determinadas etiquetas. La regla se ejecuta sólo cuando se encuentra la etiqueta.
Digester está construido sobre sax y por lo tanto tiene todas las características de sax más la especificidad que se requiere para analizar selectivamente etiquetas específicas. También utiliza una pila que se empuja con nuevos elementos como y cuando se encuentra la etiqueta correspondiente y se dispara cuando el elemento termina.
Lo uso para analizar todos mis archivos de configuración.
Consulta el digestor en http://commons.apache.org/digester/
Sí, puedes hacerlo, simplemente ignora las etiquetas que no te interesan. Pero ten en cuenta que todo el documento tendrá que ser analizado para esto (DefaultHandler impl)
public startElement(String uri, String localName, String qName, Attributes attributes) { if(localName.equals("myInterestingTag") { // do your thing.... } } public void endElement(String uri, String localName, String qName) { if(localName.equals("myInterestingTag") { // do your thing.... } } public void characters(char[] ch, int start, int length) { // if parsing myinteresting tag... do some stuff. }
Sí, puedes saltar. Simplemente defina las etiquetas que desee y sólo obtendrá esos valores de etiqueta.
Usted puede intentar utilizar XPath que utilizará SAX detrás de la escena para analizar su xml. La desventaja aquí es que XML se analizará en cada llamada de método de evaluación Xpath.
Si desea leer las etiquetas específicas, entonces el analizador de DOM es mucho más rápido que el parser SAX. El analizador de SAX es útil si desea analizar grandes archivos XML.
Puede probar una combinación de TagSoup para crear un documento XML analizable y XPath para obtener las partes interesantes.
Vea mi respuesta a una pregunta similar para una estrategia de uso de SAX para omitir / ignorar etiquetas:
Saltar nodos con saxo
Implica el cambio de ContentHandlers en XMLReader. Cuando lee un portado del documento XML que desea omitir, simplemente cambie en un ContentHandler que no haga nada con los eventos. Cuando se alcanza el final de la sección a ignorar, pasa el control de nuevo al controlador de contenido que estaba utilizando para procesar el contenido XML.
- ¿Qué es el plan de retroceso para dispositivos sin Google Play Services?
- Eclipse entra en clase en android