XML (eXtensible Markup Language) es un formato de texto para almacenar y transmitir datos estructurados mediante etiquetas personalizadas. Se utiliza ampliamente en archivos de configuración, servicios web y desarrollo Android. Según el consorcio W3C, la especificación XML sigue siendo un estándar estable desde 2008. XML proporciona una estructura de datos estricta con capacidad de validación mediante esquemas.
Puntos clave
XML es un lenguaje de marcado que define un conjunto de reglas para codificar documentos en un formato legible tanto por humanos como por máquinas. A diferencia de HTML, XML no tiene un conjunto fijo de etiquetas — los desarrolladores crean sus propias etiquetas que corresponden a la estructura de datos.
XML fue desarrollado por el consorcio W3C en 1996 como un subconjunto simplificado de SGML (Standard Generalized Markup Language). El objetivo principal de XML es separar el contenido de la presentación de datos. A diferencia de HTML, que describe la apariencia, XML describe la estructura y el significado de los datos.
La propiedad clave de XML es la extensibilidad. Si surgen nuevos tipos de datos en un proyecto, el desarrollador simplemente añade nuevas etiquetas sin cambiar la estructura existente. Esto hace que XML sea conveniente para el almacenamiento de datos a largo plazo y el intercambio entre diferentes sistemas.
La sintaxis XML es más estricta que la de HTML. Cada etiqueta de apertura debe tener su correspondiente etiqueta de cierre, los atributos van entre comillas y los nombres de etiquetas distinguen entre mayúsculas y minúsculas. El documento debe tener exactamente un elemento raíz que contenga todos los demás.
Un documento XML puede comenzar con una declaración que indique la versión de XML y la codificación. Luego sigue el elemento raíz, que puede contener elementos anidados, atributos, contenido textual y comentarios. Los elementos vacíos se escriben como
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk001">
<title>XML Developer Guide</title>
<author>John Smith</author>
<price currency="USD">29.99</price>
<published>2026-03-15</published>
</book>
<book id="bk002">
<title>Advanced XML Schemas</title>
<author>Jane Doe</author>
<price currency="USD">49.99</price>
</book>
</catalog>
XML bien formado debe seguir reglas básicas: las etiquetas de cierre son obligatorias para cada etiqueta de apertura, el anidamiento es estricto (no se permite la superposición de etiquetas), los valores de atributos siempre van entre comillas. Violar cualquier regla hace que el documento sea inválido y no analizable.
Los espacios de nombres XML resuelven el problema de conflictos de nombres cuando se utilizan elementos de diferentes vocabularios en un mismo documento. Un espacio de nombres se define mediante el atributo xmlns con un URI que identifica de forma única el vocabulario.
XML Schema (XSD) es un lenguaje para describir la estructura de un documento XML. XSD define qué elementos y atributos están permitidos, sus tipos de datos, obligatoriedad y restricciones. Los esquemas permiten la validación automática del documento antes del procesamiento, lo cual es crítico para soluciones de integración.
| Tecnología | Propósito | Ejemplo |
|---|---|---|
| DTD | Validación básica de estructura | Antiguo, menos capacidades |
| XSD | Tipado estricto y validación | Estándar de la industria |
| RELAX NG | Alternativa compacta a XSD | Más simple y legible que XSD |
| XSLT | Transformación de XML a otros formatos | XML a HTML, PDF, CSV |
| XPath | Navegación y selección de nodos | Consultas al árbol XML |
XML juega un papel clave en el desarrollo Android. El sistema operativo Android utiliza XML para describir la interfaz de usuario (archivos layout), la configuración de la aplicación (AndroidManifest.xml), los recursos (strings, colors, themes) y los gráficos vectoriales (VectorDrawable). En iOS, XML se usa con menos frecuencia, principalmente para Storyboard y archivos de configuración plist.
En Android, cada pantalla de la aplicación se describe mediante un archivo XML con una jerarquía de componentes View: ConstraintLayout, LinearLayout, TextView, Button. Este enfoque separa la lógica de la aplicación de la presentación, simplificando el mantenimiento y la adaptación a diferentes pantallas. Los archivos XML de recursos permiten localizar la aplicación sin cambiar el código.
Un archivo layout típico contiene un ConstraintLayout raíz con elementos anidados, cada uno con atributos de posición, tamaño y estilo. Android compila XML al formato binario AXML para optimizar el rendimiento en el inicio.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/welcome"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/click"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
El análisis XML en plataformas móviles se realiza mediante dos enfoques principales: DOM (Document Object Model) carga todo el documento en memoria como un árbol, SAX (Simple API for XML) lee el documento de forma secuencial, llamando a manejadores de eventos. DOM es conveniente para documentos pequeños, SAX para archivos grandes con limitaciones de memoria.
Android tiene analizadores integrados: XmlPullParser para análisis secuencial y DocumentBuilder para el enfoque DOM. iOS utiliza Foundation XMLParser con un protocolo delegado. Para serializar objetos a XML, se suelen usar bibliotecas como SimpleXML en PHP o Jackson XML en Java.
Android recomienda usar XmlPullParser para un análisis XML eficiente. El analizador opera en modo basado en eventos: llama a next() para pasar al siguiente elemento y devuelve el tipo de evento (START_TAG, TEXT, END_TAG). Esto permite procesar documentos de cualquier tamaño con un consumo mínimo de memoria.
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException
fun parseCatalog(parser: XmlPullParser): List<Book> {
val books = mutableListOf<Book>()
var eventType = parser.getEventType()
var currentBook: Book? = null
while (eventType != XmlPullParser.END_DOCUMENT) {
when (eventType) {
XmlPullParser.START_TAG -> {
when (parser.getName()) {
"book" -> currentBook = Book()
"title" -> parser.next()
"author" -> parser.next()
}
}
XmlPullParser.TEXT -> {
currentBook?.apply {
title = parser.getText() ?: ""
}
}
XmlPullParser.END_TAG -> {
if (parser.getName() == "book") {
currentBook?.let { books.add(it) }
}
}
}
eventType = parser.next()
}
return books
}
Ejemplos de uso de XML demuestran su papel en proyectos reales. Además del desarrollo Android, XML se utiliza para la configuración de builds, descripción de datos y flujo documental. Comprender la sintaxis XML es necesario para trabajar con Maven, servicios SOAP y muchas herramientas empresariales.
El archivo pom.xml describe un proyecto Maven: dependencias, plugins, versiones y perfiles de build. Cada dependencia se especifica con las etiquetas groupId, artifactId y version. Maven descarga automáticamente las bibliotecas especificadas desde los repositorios.
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0.0</version>
<dependencies>
<dependency>
<groupId>com.squareup.retrofit2</groupId>
<artifactId>retrofit</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
</project>
La elección entre XML y JSON depende de los requisitos específicos del proyecto. JSON es adecuado para API REST, aplicaciones móviles y configuraciones donde la compacidad y la velocidad son importantes. XML es insustituible en sistemas empresariales, flujo documental y desarrollo Android, donde se necesitan validación estricta, espacios de nombres y transformación de datos.
XML gana en escenarios de almacenamiento de documentos a largo plazo. Gracias a los esquemas XSD, los documentos XML se pueden validar automáticamente, lo cual es crítico para sistemas médicos, financieros y legales. Las transformaciones XSLT permiten generar HTML, PDF y otros formatos a partir de una sola fuente XML, simplificando el flujo documental.
JSON, por su parte, se ha convertido en el estándar para API web y aplicaciones móviles. La facilidad de integración con JavaScript, el menor tamaño y la alta velocidad de análisis hacen de JSON la opción preferida para API REST, mensajes WebSocket y archivos de configuración. Para la mayoría de los proyectos nuevos, se recomienda comenzar con JSON y cambiar a XML solo cuando surjan requisitos específicos.
Preguntas frecuentes
XML describe la estructura y el contenido de los datos, HTML describe la apariencia y la presentación. XML permite crear cualquier etiqueta, HTML tiene un conjunto fijo. XML es más estricto en sintaxis: todas las etiquetas deben cerrarse, HTML permite etiquetas sin cerrar. XML es para datos, HTML es para visualización.
XSD (XML Schema Definition) es un lenguaje para describir la estructura de un documento XML. XSD define qué elementos y atributos están permitidos, sus tipos de datos, obligatoriedad y restricciones. El esquema permite la validación automática de un documento XML antes de su procesamiento, evitando errores y garantizando la integridad de los datos.
En Android, use XmlPullParser para el análisis XML — un analizador secuencial integrado. Funciona mediante eventos: procesa START_TAG, TEXT y END_TAG en un bucle, gestionando la memoria de manera eficiente. Para documentos pequeños, es adecuado un analizador DOM mediante DocumentBuilderFactory, que carga todo el documento en memoria como un árbol de nodos.
DTD (Document Type Definition) es un mecanismo de validación antiguo con capacidades limitadas: no admite tipos de datos (todo son cadenas) ni espacios de nombres. XSD es un reemplazo moderno con soporte para tipos de datos (números, fechas, enumeraciones), espacios de nombres y extensibilidad. XSD en sí mismo es un documento XML, mientras que DTD usa su propia sintaxis.
Los espacios de nombres evitan conflictos de nombres cuando un documento XML combina elementos de diferentes fuentes. Por ejemplo, en un layout de Android, la etiqueta View puede provenir tanto de android.view como de una biblioteca. El atributo xmlns con un URI identifica de forma única la fuente de cada elemento y atributo.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también