NOVEDADES IMPORTANTES

Acceso a todos los contenidos

Hace unos meses decidimos suspender nuestra actividad de formación online en Digital Learning SL (propietaria de esta web).

Desde entones hemos mantenido operativos nuestra plataforma de teleformación y webs de contenidos Academia Android y Digital Learning, habilitando un acceso libre y gratuito a todos estos recursos, incluyendo cursos y contenidos Premium que antes requerían un registro y pago previo, lo que ha propiciado un volumen de visitas constante de usuarios que consultan esta formación.

Venta-traspaso de los contenidos

Creemos que estas webs por sus contenidos, posicionamiento SEO y atracción de tráfico (junto a sus cuentas en redes sociales asociadas, incluyendo Twitter y Facebook de nuestro curso de Community Manager) pueden ser una oportunidad para emprendedores o compañías de diversos ámbitos (formación, marketing y publicación online, desarrollo software,…) que quieran:

  • Captar usuarios, alumnos o clientes para sus proyectos, productos y servicios.
  • Comercializar los contenidos bajo múltiples fórmulas: venta de publicidad, modelos freemium o de pago, suscripciones…
  • Crear un nuevo proyecto a partir de esta infraestructura de recursos.

Si tú o tú empresa estáis interesados en adquirirlos, ofrecemos su traspaso en propiedad exclusiva. Puedes contactar conmigo en «contacto@digitallearning.es» (por favor entiende que los correos que no vengan suficientemente identificados no vamos a atenderlos). Gracias.

Manuel Cabello (Socio-Director de Digital Learning/Academia Android)

Este es el número de tutoriales publicados:

Pincha en los textos de los contadores de Tutoriales publicados, Premium o Series de tutoriales para tener un detalle de las publicaciones que comprenden.

Desde hace unos meses, todos los contenidos, incluidos los Premium, son accesibles libre y gratuitamente.

  • Premium
  • Acceso libre
130
Acceso libre
126
Premium

Algunos datos sobre los contenidos que hemos publicado hasta la fecha:

74
Videos
61
Proyectos descargables
contacto[arroba]digitallearning.es

Tratamiento de XML en Android: DOM

Post Series: Tratamiento de XML con SAX y DOM

Siguiendo con el tratamiento de información XML en Android y tras describir el modelo SAX en la anterior publicación, vamos a presentar en ésta el modelo DOM.

Definición de DOM (Document Object Model)

DOM es el acrónimo de Modelo del Objeto Documento. El DOM, representa al documento XML y sus diferentes partes en una especie de organigrama con un conjunto de nodos dispuestos de forma jerárquica. Estos nodos son los elementos del documento, y se compara de forma habitual con la imagen de un árbol que se va ramificando en distintos niveles y en donde las hojas son los elementos o nodos que tiene la página.

Si has programado alguna vez páginas web (X)HTML quizás sabrás que el DOM es una API (Interfaz de Programación de Aplicaciones), es decir nos proporciona un conjunto de métodos que nos permiten acceder a cada uno de esos nodos o elementos, pudiendo modificarlos, eliminarlos o incluso crear nuevos utilizando algún lenguaje de programación. En la web es muy común utilizar Javascript, pero la API del DOM es independiente del lenguaje, y en este entorno Android utilizaremos lógicamente Java.

De esta forma, el DOM representa un modelo abstracto del documento XML como un mapa de nodos conectados que carga completamente en memoria, donde cada nodo es un objeto que podemos manipular mediante un programa, con la potencia que esto implica, aunque también con el consumo de recursos asociado, por ejemplo si se trata con  un fichero XML muy extenso.

Veamos un sencillo simplificado de un fichero  XML:

y su representación gráfica en forma de mapa de nodos organizados jerárquicamente (pincha en la imagen para ampliarla):

Arbol XML

Interfaces y Métodos DOM (paquete Java org.w3c.dom.*)

En este apartado, vamos a describir los principales interfaces y métodos que intervienen en la gestión de nodos del paquete Java org.w3c.dom.*.

Al final del mismo, mostraremos un ejemplo sencillo de utilización de algunos de esos métodos sobre un documento XML muy básico y en la próxima publicación veremos un proyecto ejemplo más completo.

org.w3c.dom.*

Paquete donde se definen todas las clases e interfaces que permitirán manipular desde Java los nodos de un documento (documentación oficial en Android Developers XML)

org.w3c.dom.Document

Interfaz Document que representa la totalidad de un documento HTML o XML.

Interfaces DOM
Element
Node
Nodelist
Attr

org.w3c.dom.Element

Interfaz Element que proporciona la abstracción de un conjunto ordenado de nodos, sin definir o limitar cómo se implementa esta colección.

Métodos públicos
Método Descripción
getAttribute(String name) Devuelve el valor del atributo pasándole como argumento el nombre.
getAttributeNode(String name) Devuelve el nodo del atributo pasándole como argumento el nombre.
getElementsByTagName(String name) Devuelve un NodeList de todos los elementos descendientes del atributo, pasándole como argumento el nombre de la etiqueta.
getTagName() Devuelve el nombre del elemento.
removeAttribute(String name) Elimina un atributo por su nombre.

org.w3c.dom.Node

Interfaz Node que define el tipo de dato primario para todo el DOM. Esto permite ser representado como un solo nodo en el árbol del documento.

Métodos públicos
Método Descripción
getFirstChild() Devuelve el primer nodo hijo del nodo actual. Si no existe, devuelve null.
getNextSibling() Devuelve el nodo inmediatamente siguiente (hermano) a este nodo. Si no existe, devuelve null.
getParentNode() Devuelve el padre de este nodo. Todos los nodos, excepto los de tipo Attr, Document, DocumentFragment, Entity, y Notation pueden tener un padre. Sin embargo, será null si el nodo está recién creado y no ha sido añadido todavía al árbol, o si ha sido eliminado del árbol.
getChildNodes() Devuelve una lista de la clase NodeList que contiene todos los nodos hijo de este nodo. En caso de que no haya nodos hijos, la lista estará vacía.
removeChild(Node oldChild) Elimina el nodo indicado como argumento de entrada.
replaceChild(Node newChild, Node oldChild) Reemplaza el nodo hijo existente (oldChild) por un nuevo nodo (newChild).
appendChild(Node newChild) Añade un nuevo nodo al final de la lista de hijos de este nodo.
insertBefore(Node newChild, Node refChild) Inserta un nuevo nodo (newChild) antes del nodo hijo existente (refChild).

org.w3c.dom.NodeList

Interfaz NodeList que permite la abstracción de un conjunto ordenado de nodos, sin definir o limitar cómo se implementa esta colección. Los elementos de la interfaz NodeList son accesibles a través de un índice, comenzando desde 0.

Métodos públicos
Método Descripción
getLength() Devuelve el número de nodos en la lista.
item(int index) Devuelve el índice del elemento de la colección.

org.w3c.dom.Attr

Interfaz Attr que representa un atributo dentro de un objeto Element. No son considerados por DOM como parte de la estructura del documento, al no tratarse de nodos hijos del elemento que describen.

Métodos públicos
Método Descripción
getName() Devuelve el nombre del atributo.
getOwnerElement() Recupera el Element propietario del atributo.
getValue() Devuelve un String con el valor del atributo.

Ejemplo básico uso métodos DOM

Vamos a tratar este sencillo fichero XML:

con el siguiente código, que nos servirá como un ejemplo básico del uso de algunas de estas interfaces y métodos presentados:

Si compilamos el código anterior, se mostraría la siguiente salida a través del logcat de Android Studio:

Salida Ejemplo DOM en LogCat

En las próximas publicaciones (tutorial web con código descargable y video)  desarrollaremos un proyecto donde crearemos un sistema de ficheros XML para las fichas de clientes de una empresa, pudiendo realizar diferentes operaciones sobre dicha información.