Tutorial XML

INICIO XML Introducción XML XML Cómo utilizar Árbol XML Sintaxis XML Elementos XML Atributos XML Espacios de nombres XML Pantalla XML Solicitud Http XML Analizador XML DOM XML XPath XML XML XSLT XQuery XML Enlace X XML Validador XML DTD XML Esquema XML Servidor XML Ejemplos XML Cuestionario XML Certificado XML

XML-AJAX

AJAX Introducción AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

DOM XML

DOM Introducción Nodos DOM Acceso DOM Información del nodo DOM Lista de nodos DOM Atravesando DOM Navegación DOM DOM obtener valores Nodos de cambio de DOM Eliminar nodos DOM Nodos de reemplazo de DOM DOM Crear nodos Agregar nodos DOM Nodos de clonación de DOM Ejemplos de DOM

Tutorial XPath

Introducción a XPath Nodos XPath Sintaxis XPath Ejes XPath Operadores XPath Ejemplos de XPath

Tutorial XSLT

XSLT Introducción Idiomas XSL Transformación XSLT XSLT <plantilla> XSLT <valor-de> XSLT <para-cada> XSLT <ordenar> XSLT <si> XSLT <elegir> Aplicar XSLT XSLT en el cliente XSLT en el servidor XSLT Editar XML Ejemplos de XSLT

Tutorial de XQuery

Introducción a XQuery Ejemplo de XQuery XQuery FLWOR XQuery HTML Términos de XQuery Sintaxis XQuery XQuery Agregar Seleccionar XQuery Funciones XQuery

DTD XML

Introducción a DTD Bloques de construcción DTD Elementos DTD Atributos DTD Elementos DTD vs Attr Entidades DTD Ejemplos de DTD

Esquema XSD

XSD Introducción XSD Cómo XSD <esquema> Elementos XSD Atributos XSD Restricciones XSD

Complejo XSD

Elementos XSD XSD vacío Solo elementos XSD Solo texto XSD XSD mixto Indicadores XSD XSD <cualquiera> XSD <cualquieratributo> Sustitución XSD Ejemplo XSD

Datos XSD

Cadena XSD Fecha XSD XSD Numérico Miscelánea XSD Referencia XSD

Servicios Web

Servicios XML XML WSDL JABÓN XML XML RDF RSS XML

Referencias

Tipos de nodos DOM Nodo DOM Lista de nodos DOM DOM NamedNodeMap Documento DOM Elemento DOM Atributo DOM Texto DOM DOM CDATA Comentario DOM DOM XMLHttpSolicitud Analizador DOM Elementos XSLT Funciones XSLT/XPath

Árbol de nodos transversales XML DOM


Atravesar significa recorrer o viajar a través del árbol de nodos.


Atravesando el árbol de nodos

A menudo, desea hacer un bucle en un documento XML, por ejemplo: cuando desea extraer el valor de cada elemento.

Esto se llama "Atravesar el árbol de nodos"

El siguiente ejemplo recorre todos los nodos secundarios de <libro> y muestra sus nombres y valores:

Ejemplo

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var x, i ,xmlDoc;
var txt = "";
var text = "<book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

// documentElement always represents the root node
x = xmlDoc.documentElement.childNodes;
for (i = 0; i < x.length ;i++) {
    txt += x[i].nodeName + ": " + x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
</script>

</body>
</html>

Producción:

title: Everyday Italian
author: Giada De Laurentiis
year: 2005

Ejemplo explicado:

  1. Cargue la cadena XML en xmlDoc
  2. Obtener los nodos secundarios del elemento raíz
  3. Para cada nodo secundario, genere el nombre del nodo y el valor del nodo del nodo de texto


Diferencias del navegador en el análisis de DOM

Todos los navegadores modernos admiten la especificación W3C DOM.

Sin embargo, existen algunas diferencias entre los navegadores. Una diferencia importante es:

  • La forma en que manejan los espacios en blanco y las líneas nuevas

DOM - Espacios en blanco y líneas nuevas

XML a menudo contiene caracteres de nueva línea o espacios en blanco entre los nodos. Este suele ser el caso cuando el documento es editado por un editor simple como el Bloc de notas.

El siguiente ejemplo (editado por el Bloc de notas) contiene CR/LF (nueva línea) entre cada línea y dos espacios delante de cada nodo secundario:

<book>
  <title>Everyday Italian</title>
  <author>Giada De Laurentiis</author>
  <year>2005</year>
  <price>30.00</price>
</book>

Internet Explorer 9 y versiones anteriores NO tratan los espacios en blanco vacíos ni las líneas nuevas como nodos de texto, mientras que otros navegadores sí lo hacen.

El siguiente ejemplo generará la cantidad de nodos secundarios que tiene el elemento raíz (de books.xml ). IE9 y anteriores generarán 4 nodos secundarios, mientras que IE10 y versiones posteriores, y otros navegadores generarán 9 nodos secundarios:

Ejemplo

function myFunction(xml) {
var xmlDoc = xml.responseXML;
    x = xmlDoc.documentElement.childNodes;
    document.getElementById("demo").innerHTML =
    "Number of child nodes: " + x.length;
}

PCDATA - Datos de caracteres analizados

Los analizadores XML normalmente analizan todo el texto de un documento XML.

Cuando se analiza un elemento XML, también se analiza el texto entre las etiquetas XML:

<message>This text is also parsed</message>

El analizador hace esto porque los elementos XML pueden contener otros elementos, como en este ejemplo, donde el elemento <name> contiene otros dos elementos (el primero y el último):

<name><first>Bill</first><last>Gates</last></name>

y el analizador lo dividirá en subelementos como este:

<name>
  <first>Bill</first>
  <last>Gates</last>
</name>

Datos de caracteres analizados (PCDATA) es un término utilizado sobre los datos de texto que serán analizados por el analizador XML.


CDATA - Datos de caracteres (sin analizar)

El término CDATA se usa sobre datos de texto que no deben ser analizados por el analizador XML.

Caracteres como "<" y "&" son ilegales en elementos XML.

"<" generará un error porque el analizador lo interpreta como el comienzo de un nuevo elemento.

"&" generará un error porque el analizador lo interpreta como el comienzo de una entidad de carácter.

Algunos textos, como el código JavaScript, contienen muchos caracteres "<" o "&". Para evitar errores, el código de secuencia de comandos se puede definir como CDATA.

El analizador ignora todo lo que hay dentro de una sección CDATA.

Una sección CDATA comienza con " <![CDATA[ " y termina con " ]]> ":

<script>
<![CDATA[
function matchwo(a,b) {
    if (a < b && a < 0) {
        return 1;
    } else {
        return 0;
    }
}
]]>
</script>

En el ejemplo anterior, el analizador ignora todo lo que está dentro de la sección CDATA.

Notas sobre las secciones de CDATA:

Una sección CDATA no puede contener la cadena "]]>". No se permiten secciones anidadas de CDATA.

El "]]>" que marca el final de la sección CDATA no puede contener espacios ni saltos de línea.