"¿Cómo estás?"

"Genial. No me puedo quejar. Hoy Bilaabo me habló de JavaScript. No todo, por supuesto, pero más que un poco. Por supuesto, todavía no he escrito nada en JS, pero no creo que sea difícil."

"Y Ellie me contó sobre la serialización JSON. Y me explicaste el marco de trabajo de Jackson y cómo configurar la 'deserialización polimórfica' usando anotaciones".

"¡De ninguna manera! ¡Eres inteligente ahora, Amigo! ¡Un verdadero semental!"

"¡Y algo más!"

"OK. Manos a la obra. Hoy tenemos un tema nuevo e interesante: XML " .

XML, serialización en XML - 1

"XML es un estándar para representar datos que pueden ser leídos fácilmente por humanos, e incluso más fácilmente por programas. Aquí hay un archivo XML de ejemplo:"

XML
<data>
<owner first="Adam" last="Shelton">
<address>London</address>
</owner>
<cat name="Missy" age="15"/>
</data>

"La base de XML son las etiquetas. Una etiqueta es una palabra entre paréntesis angulares (signos mayor que y menor que). Hay etiquetas de apertura y cierre. Cada etiqueta de apertura tiene exactamente una etiqueta de cierre correspondiente. Las etiquetas de apertura pueden tener atributos. "

"Las etiquetas se pueden anidar dentro de una etiqueta, creando así un árbol de elementos. La etiqueta de nivel superior se llama raíz: tiene etiquetas secundarias, que a su vez tienen sus propias etiquetas secundarias".

"Aquí hay unos ejemplos:"

Etiqueta Descripción
< datos > Etiqueta de datos de apertura
</ datos > Etiqueta de datos de cierre
nombre del gato = " Missy " edad = " 15 "> Una etiqueta con atributos. Los valores de los atributos están entre comillas
<datos>
<propietario>
<nombre del gato = "Missy"/>
</propietario>
</datos>
Etiquetas anidadas.
< nombre del gato = "Missy" edad = "15"  /> Una etiqueta de cierre automático.
Estas etiquetas no necesitan etiquetas de cierre.
Y no pueden tener etiquetas de niños.
<info>
Cualquier tipo de información puede ir aquí
</info>
Una etiqueta puede contener datos de texto
<info>
Cualquier tipo
<data xxx = "yyy">
</data>
de información
<data 2xxx = "yyy"/>
puede ir aquí
</info>
Una etiqueta puede contener datos de texto intercalados con otras etiquetas.

"Parece fácil. ¿Qué tipo de etiquetas hay?"

"Cualquier tipo. No hay etiquetas reservadas. XML es un lenguaje para describir cualquier dato. Las personas crean las etiquetas que satisfacen sus necesidades y acuerdan cómo usarlas".

"Esencialmente, XML es una forma de escribir datos como un árbol de elementos que una computadora puede entender".

"Creo que ahora lo entiendo. Por cierto, tengo una pregunta".

"JSON se usa para enviar datos desde un navegador a un servidor, pero ¿dónde se usa XML?"

"En los mismos lugares donde se usa JSON: para almacenar y enviar datos".

"Está bien, continuemos".

"Imagínese que tiene un archivo XML compartido que almacena datos para un programa que está siendo escrito por veinte personas. Cada uno de ellos presenta sus propias etiquetas y rápidamente comienzan a interferir entre sí".

"Para garantizar que las etiquetas sean únicas, se inventaron los prefijos. Así es como se ven:"

Etiquetas Descripción
< animal :gato> Una etiqueta de gato con el prefijo animal .
< animal :gato>
</ animal: gato>
< zoologico :gato>
</ zoologico :gato>
Dos etiquetas para gatos con diferentes prefijos.
< animal : gato  zoológico : nombre = "MX"> Una etiqueta de gato con el prefijo animal . Un atributo de nombre con el prefijo del zoológico .

"Los prefijos también se llaman espacios de nombres. Si los llamamos espacios de nombres, entonces la última descripción en la tabla se convierte en 'Una etiqueta de gato con el espacio de nombres del animal. Un atributo de nombre con el espacio de nombres del zoológico'".

"Por cierto, ¿recuerdas que en Java cada clase tiene un nombre corto y un nombre único largo que incluye el nombre del paquete, que también se especifica al importar el paquete?"

"Sí."

"Bueno, los prefijos también tienen un nombre largo único, y también se especifica cuando se importan: "

Ejemplo
< data  xmlns:soap="http://cxf.apache.org/bindings/soap" >
 < jabón :elemento> 
< jabón :info/> 
</ jabón :elemento> 
</ datos >

"' xml ns :soap' significa ' XMLn ame s pace SOAP'"

"También puede establecer el nombre único de las etiquetas que no tienen prefijo: "

Ejemplo
<datos xmlns = "http://www.springframework.org/schema/beans" 
xmlns: jabón = "http://cxf.apache.org/bindings/soap" 
xmlns:task = "http://www.springframework .org/schema/task" > 
< jabón :elemento> 
< jabón :info/> 
< tarea :info/> 
</ jabón :elemento> 
</datos>

"'xmlns=…' establece el espacio de nombres para el prefijo vacío. En otras palabras, establece el espacio de nombres para las etiquetas sin prefijo, como los datos del ejemplo anterior".

"Puede tener tantos espacios de nombres como desee en un documento, pero cada uno debe tener un nombre único".

"Ya veo. ¿Por qué estos espacios de nombres tienen nombres únicos tan extraños?"

"Por lo general, indican una URL que apunta a un documento que describe el espacio de nombres y/o sus etiquetas XML".

"Me arrojaste mucha información hoy. ¿Qué más hay?"

"Todavía hay un poco más".

"Primero, XML tiene un encabezado. Es una línea especial que describe la versión XML y la codificación del archivo. Suele tener este aspecto:"

"Por lo general se ve así:"

Ejemplo
<? versión xml  =  codificación "1.0" = "UTF-8"?>
<datos xmlns:soap = "http://cxf.apache.org/bindings/soap">
<jabón:elemento>
<jabón:info/>
</jabón:elemento>
</datos>

"También puede agregar comentarios a XML. Para iniciar un comentario, use '<!--'. Para finalizarlo, use '-->'".

Ejemplo
<?xml version = "1.0" encoding = "UTF-8"?>
<data xmlns:soap = "http://cxf.apache.org/bindings/soap">
<soap:item>
<!-- <soap:info/> -->
</soap:item>
<!-- This is also a comment  -->
</data>

"Entiendo hasta ahora".

"Ciertos símbolos (< > " &) tienen un significado especial en XML, por lo que no se pueden usar en ningún otro lugar. Podemos eludir esta restricción con una secuencia de escape: un conjunto de caracteres utilizados para representar otros caracteres/símbolos. Éstos son algunos de ellos:"

Secuencia de escape Símbolo que reemplaza
&erio; &
" «
< <
> >
' '

"Y aquí hay un ejemplo de código incrustado en XML:"

codigo Java Código Java en XML
if (a < b)
System.out.println("a is minimum");
<código>
si (a  <  b)
 System.out.println( " a es mínimo " );
</código>

"Uh... Eso no se ve bonito."

"¿Recordarás que en Java también se escapan algunos caracteres? Por ejemplo, "\". ¿Y que esta secuencia también debe escribirse dos veces cuando se escribe en una cadena? Así que esto es algo común".

"DE ACUERDO."

"Eso es todo lo que tengo por hoy".

"Hurra. Finalmente puedo tomar un descanso".