Trabajando con XML

Como sabrás XML es uno de los estándares más utilizados en la actualidad para codificar información. Es ampliamente utilizado en Internet, además como hemos mostrado a lo largo de este libro, se utiliza para múltiples usos en el SDK de Android. Entre otras cosas es utilizado para definir Layouts, animaciones,AndroidManifest.xml,etc.

Una de las mayores fortalezas de la plataforma Android es que se aprovecha el lenguaje de programación Java y sus librerías. El SDK de Android no acaba de ofrecer todo lo disponible para su estándar del entorno de ejecución Java (JRE), pero es compatible con una fracción muy significativa de la misma. Lo mismo ocurre en lo referente a trabajar con XML, Java dispone de gran cantidad de API con este propósito pero no todas están disponibles desde Android.

Librerías disponibles:

Java’s Simple API for XML (SAX) (paquetes org.xml.sax.*)

Document Object Model (DOM) (paquetes org.w3c.dom.*)

Librerías no disponibles:

Streaming API for XML (StAX). Aunque se dispone de otra librería con funcionalidad equivalente (paquete org.xmlpull.v1.XmlPullParser).

Java Architecture for XML Binding (JAXB). Resultaría demasiado pesada para Android.

Como podrás ver al estudiar los ejemplos, leer y escribir ficheros XML es muy laborioso y necesitarás algo de esfuerzo para comprender el código empleado. Vamos a explicar las dos alternativas más importantes, SAX y DOM. El planteamiento es bastante diferente. Tras ver los ejemplos podrás decidir qué herramienta se adapta mejor a tus gustos personales o al problema en concreto que tengas que resolver.

El ejemplo utilizado para ilustrar el trabajo con XML será el mismo que el utilizado en el resto del capítulo: almacenar las mejores puntuaciones obtenidas. El formato XML que se utilizará para este propósito se muestra a continuación:

<?xml version="1.0" encoding="UTF-8"?>
<lista_puntuaciones>
    <puntuacion fecha="1288122023410">
          <nombre>Mi nombre</nombre>
          <puntos>45000</puntos>
    </puntuacion>
    <puntuacion fecha="1288122428132">
          <nombre>Otro nombre</nombre>
          <puntos>31000</puntos>
    </puntuacion>
</lista_puntuaciones>