2. INTRODUCCION
XML se inició como un subconjunto de SGML (structured generalized markup language),
un standard ISO para documentos estructurados que es sumamente complejo para
poder servir documentos en la web. XML es algo así como SGML simplificado, de forma
que una aplicación no necesita comprender SGML completo para interpretar un
documento, sino sólo el subconjunto que se defina. Los editores SGML, sin embargo,
pueden comprender XML.
3. CONCEPTO
XML es un Sistema para definir, validar y compartir formatos de documentos en la
Web. Para crear XML se tomaron las mejores partes tanto del lenguaje SGML como del
HTML. La diferencia fundamental entre HTML y XML es que el primero estaba orientado
a la presentación de datos, mientras que XML está orientado al contenido de los datos y
su tratamiento, por lo que cualquier software informático trabajará mejor con XML.
4. CARACTERISTICAS
XML es un subconjunto de SGML que incorpora las tres características más importantes de este:
• Extensibilidad
• Estructura
• Validación
Orientado a los contenidos no presentación.
Las etiquetas se definen para crear los documentos, no tienen un significado preestablecido.
No es sustituto de HTML.
No existe un visor genérico de XML.
Separa radicalmente el contenido y el formato de presentación
Diseñado para cualquier lenguaje y alfabeto. (encoding)
5. TIPOS DE ANALIZADOR XML
Para leer y actualizar, crear y manipular un documento XML, se necesita un analizador
XML.
En PHP hay dos tipos principales de analizadores XML:
Parsers basado en Árbol
Analizadores basados en árboles suben todo el documento en la memoria y
transforma el documento XML en una estructura de árbol. Analiza todo el
documento, y proporciona acceso a los elementos del árbol.
• Simple XML
• DOM
Parsers basado en eventos
Lee el documento secuencialmente de principio a fin, sin cargarlo en memoria, de
forma que cuando encuentra un elemento se encarga de lanzar su evento asociado.
• Sax
6. ESTRUCTURA
Un documento XML está formado por datos de caracteres y marcado, el marcado lo
forman las etiquetas:
Estructura
8. SAX
SAX (Simple API for XML): es un enfoque para analizar documentos XML, pero no
para validarlos. se encarga de recorrer la estructura del documento generando
eventos que corresponden a los elementos que se va encontrando.
Los siguientes tres eventos son los más importantes:
• A partir de un elemento
• Final de un elemento
• los bloques CDATA
9. DOM
DOM (Document Object Model): representa el archivo en una estructura tipo árbol que usará
para leer el documento.
CARGA DE DOCUMENTOS
– Instanciar DOM $mixml = new DOMDocument(‘1.0’, ‘UTF-8’);
– Cargar archivo físico $mixml->load($path_archivo).
– Cargar string $mixml->loadXML($stringXML);
10. LECTURA DE NODOS
– Recuperar los tags con un nombre $elemento->getElementsByTagName(‘nom_tag’)
– Cada uno de estos elementos nos llega como ->item(0), ->item(1)
– Podemos iterar los resultados con un bucle foreach
– Valores de atributos con $nodo->getAttribute($nom_atributo)
EDITAR NODOS
– Podemos acceder a los nodeValues y atributos y sobreescribirlos
– Para crear nodo $nuevonodo = new DOMElement($mitag)
– Para crear nodo de texto $nuevonodo->createTextNode($contenido)
– Para añadir nuevos nodos $nodopadre->appendChild($nuevonodo)
11. BORRAR NODO
– Borrado de nodo $nodo->parentNode->removeChild($nodo);
GUARDAR XML
– Guardado en disco: $documento->save($rutadestino);
– Guardado a string: $stringXML = $documento->saveXML();
13. SIMPLE XML
SimpleXML es un analizador basado en árbol que proporciona una manera fácil de obtener el
nombre de un elemento, atributos y contenido textual si sabe estructura o el diseño del
documento XML.
SimpleXML convierte un documento XML en una estructura de datos que se pueden recorrer
como una colección de matrices y objetos. En comparación con el DOM toma menos líneas de
código para leer datos de texto de un elemento.
14. CARGA DE DOCUMENTOS
– simplexml_load_file($fichero_fisico)
– simplexml_load_string($xmlstring)
– simplexml_import_dom () Esta función acepta DOM con formato XML y el contenido que se
convierte en XML simple.
SimpleXML siempre espera almenos 1 elemento. Si estamos creando un documento
desde 0 deberemos inicializarlo con DOM o con un String.
15. ACCEDER A LOS NODOS
–echo $xml->name
– Por ejemplo, para recuperar el nombre del átomo 23 es tan fácil como:
$nomatom23 = $xml->ATOM[23]->NAME;
AÑADIR NUEVOS NODOS
Se puede añadir elementos y atributos de forma sencilla en cualquier punto con
addChild($nodo, $contenido) o addAttribute($nombre, $valor)