Uploaded by Esteban Rojas

PHP8-3801-SimpleXML

advertisement
PHP
SimpleXML
SimpleXML
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Manejar XML desde SimpleXML
Herramientas para menajer XML desde PHP
Cargar un documento XML con SimpleXML
Acceder a los elementos y atributos con SimpleXML
Manejo de cadenas en SimpleXML
Etiquetas XML especiales
Manejo de errores en SimpleXML
El espacio de nombres en SimpleXML
Obtener los espacios de nombres de un documento y un elemento
Acceder a los elementos y atributos con espacios de nombres con SimpleXML
SimpleXML
11.
12.
13.
14.
15.
16.
17.
SimpleXML y XPath
Filtrar nodos por medio de XPath
Modificar el prefijo de un Namespace con SimpleXML
Editar y eliminar elementos en un documento XML
Modificar, eliminar y almacenar documentos con NS
Añadir nodos y atributos con simpleXML
SimpleXML y DOMDocument
PHP
1. Herramientas XML en PHP
Herramientas XML en PHP
●
●
●
●
●
DOM: Document Object Model
SimpleXML
XML Parser - Simple API for XML (SAX) Compatible con PHP4.
XMLReader y XMLWriter
XSL Reestructura los datos XML usando XSLT
Herramientas XML en PHP
●
DOM:
○
○
○
○
○
Compatible con el estándar W3C DOM
Con más de 19 clases
Poderosa navegación y capacidad de edición.
Se considera dificil de usar
Muchos pasos para conseguir resultados
Herramientas XML en PHP
●
SimpleXML:
○
○
○
○
Contiene dos clases y tres funciones
Se accede a elementos y atributos por nombre.
Igual cuando la estructura es conocida
Su capacidad de edición del documento XML es limitada
Herramientas XML en PHP
●
SimpleXML y DOM:
○
○
○
○
○
SimpleXML y DOM están basados en analizadores de tipo árbol.
Todo el documento es cargado en memoria
Pueden acceder a todas las partes del documento
Ambos pueden leer y escribir un documento XML
Documentos muy grandes pueden afectar el desempeño de la aplicación
Herramientas XML en PHP
●
SAX y XMLReader:
○
○
○
○
○
Ambos leen segmentos de un archivo
El documento es leído por partes
Son rápidos y utilizan poca memoria
No pueden modificar el documento XML
No pueden retroceder
Herramientas XML en PHP
●
●
●
●
●
●
Documentos cortos y con la estructura conocida, utilizar SimpleXML.
Documentos largos o muy largos, utilizar XMLReader.
Si desea modificar la estructura del documento no muy grande, use
SimpleXML.
Si desea modificar la estructura del documento de un documento grande o
muy grande, use XMLWriter.
Si quiere manejar documento XML complejos, use DOM.
Si quiere filtrar o manipular el documento, use XSL.
PHP
2. Ejemplo de lectura con
SimpleXML
Ejemplo de lectura con SimpleXML
●
Cuenta con dos clases:
○
○
●
Tres funciones
○
●
●
●
●
SimpleXMLElement
SimpleXMLIterator
Load XML de una cadena o archivo o importarlo del DOM.
Generalmente el proceso con SimpleXML es cargarlo y visualizarlo con un
ciclo foreach().
Accedemos a los elementos con el operador flecha ->
Los atributos los accedemos con la notación de arreglos (corchetes).
Visualizamos con echo o print como una cadena.
PHP
3. Acceder a los elementos y
atributos
Acceder a los elementos y atributos
●
●
●
●
Generalmente el proceso con SimpleXML es cargarlo y visualizarlo con un
ciclo foreach().
Accedemos a los elementos con el operador flecha ->
Los atributos los accedemos con la notación de arreglos (corchetes).
Visualizamos con echo o print como una cadena.
PHP
4. Convertir valores a cadenas
Convertir valores a cadenas
●
Para convertir un elemento a una cadena podemos utilizar las funciones de
PHP como strtoupper() o (string).
PHP
5. Nombres de nodos
Nombres de etiqueta
●
●
Los nombres de etiquetas de XML pueden recibir guiones, guiones bajos,
acentos y eñes, pero PHP no los soporta en sus nombres de variables.
Para poder visualizarlos necesitamos llaves y el nombre entre comillas
simples o dobles.
PHP
6. Errores en XML
Errores en XML
libxml_use_internal_errors(true);
foreach(libxml_get_errors() as $error){
}
Errores en XML
libXMLError {
/* Propiedades */
public int $level ;
public int $code ;
public int $column ;
public string $message ;
public string $file ;
public int $line ;
}
PHP
7. Namespaces
Namespaces
●
●
●
●
Evitar conflictos entre diferentes términos XML.
Identificar elementos relacionados para facilitar el procesamiento.
Cada espacio de nombres está enlazado a una URL única
El espacio de nombres puede aplicarse a todo el documento.
Namespaces
●
Un espacio de nombres se declara usando el atributo XML reservado xmlns,
cuyo valor debe ser un identificador uniforme de recurso.
xmlns="http://www.w3.org/1999/xhtml"
Namespaces
<?xml version="1.0"?>
<cli:cliente xmlns:cli='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/cliente'
xmlns:ped='http://es.wikipedia.org/wiki/Espacio_de_nombres_XML/pedido'>
<cli:numero_ID>1232654</cli:numero_ID>
<cli:nombre>Fulanito de Tal</cli:nombre>
<cli:telefono>99999999</cli:telefono>
<ped:pedido>
<ped:numero_ID>6523213</ped:numero_ID>
<ped:articulo>Caja de herramientas</ped:articulo>
<ped:precio>187,90</ped:precio>
</ped:pedido>
</cli:cliente>
Namespaces
●
●
●
●
Espacios de nombres múltiples pueden existir en el mismo documento.
Elementos y argumentos pueden pertenecer a un espacio de nombres.
Los prefijos distinguen entre diferentes espacio de nombres.
SimpleXML ignora los prefijos de elementos y atributos.
PHP
8. Recuperar los espacio de
nombres
Recuperar los espacio de nombres
●
●
(PHP 5 >= 5.1.2, PHP 7, PHP)
SimpleXMLElement::getDocNamespaces — Regresa los namespaces
declarados en el documento
Recuperar los espacio de nombres
●
●
●
(PHP 5 >= 5.1.2, PHP 7, PHP)
SimpleXMLElement::getNamespaces — Retorna los namespaces usados en
el documento
public SimpleXMLElement::getNamespaces ([ bool $recursive = false ] ) :
array
PHP
9. Acceder a los elementos y
atributos de un namespace
Acceder a los elementos y atributos de un namespace
●
●
●
●
Primero necesitamos identificar el espacio de nombres.
Podemos detectar el atributo por medio del método attribute() pero
necesitamos utilizar la url del ns.
También podemos utilizar el método children(); como parámetro del ns.
Podemos utilizar el método children() pero como la cadena del ns y el valor
true.
PHP
10. SimpleXML y XPath
SimpleXML y XPath
●
●
●
●
XPath es una especificación de la W3C.
XPath es similar al manejo de un archivo en un disco duro.
Podemos utilizar los caminos y funciones.
Podemos encontrar y filtrar datos y luego navegar en ellos.
SimpleXML y XPath
●
●
●
●
●
●
“nombre de nodo” selecciona todos los nodos con el nombre "nombre de
nodo"
/ Selecciona desde el nodo raíz
// Selecciona los nodos en el documento del nodo actual que coinciden con
la selección sin importar dónde estén
. Selecciona el nodo actual
.. Selecciona el padre del nodo actual
@ Selecciona atributos
PHP
11. Usar XPath para filtrar
elementos
SimpleXML y XPath
●
●
●
●
●
●
“nombre de nodo” selecciona todos los nodos con el nombre "nombre de
nodo"
/ Selecciona desde el nodo raíz
// Selecciona los nodos en el documento del nodo actual que coinciden con
la selección sin importar dónde estén
. Selecciona el nodo actual
.. Selecciona el padre del nodo actual
@ Selecciona atributos
PHP
12. Crear un espacio de nombres
personalizado con simpleXML
Crear un espacio de nombres personalizado
●
●
●
●
Lo que determina el espacio de nombres es la URL, no el prefijo.
El prefijo de un espacio de nombres se puede cambiar con simpleXML.
Podemos cambiar el prefijo con el método registerXPathNamespace().
La sintaxis sería el siguiente:
public SimpleXMLElement::registerXPathNamespace ( string $prefix , string $ns ) : bool
PHP
13. Modificar, eliminar y almacenar
documentos con SimpleXML
Modificar, eliminar y almacenar documentos
(PHP 5, PHP 7, PHP)
SimpleXMLElement::asXML — Retorna un string XML correcto basado en un
elemento SimpleXML
Descripción:
public SimpleXMLElement::asXML ([ string $filename ] ) : mixed
El método asXML formatea los datos del objeto padre en XML versión 1.0.
PHP
14. Modificar, eliminar
y almacenar documentos con NS
Modificar, eliminar y almacenar documentos
(PHP 5, PHP 7, PHP)
SimpleXMLElement::asXML — Retorna un string XML correcto basado en un
elemento SimpleXML
Descripción:
public SimpleXMLElement::asXML ([ string $filename ] ) : mixed
El método asXML formatea los datos del objeto padre en XML versión 1.0.
PHP
15. Añadir nodos y atributos
Con simpleXML
Añadir nodos y atributos con simpleXML
(PHP 5 >= 5.1.3, PHP 7, PHP)
SimpleXMLElement::addChild — Añade un elemento hijo al nodo XML
Descripción
public SimpleXMLElement::addChild ( string $name [, string $value [, string
$namespace ]] ) : SimpleXMLElement
Añade un elemento hijo al nodo y retorna un SimpleXMLElement del hijo.
Añadir nodos y atributos con simpleXML
(PHP 5 >= 5.1.3, PHP 7, PHP)
SimpleXMLElement::addAttribute — Añade un atributo al elemento SimpleXML
Descripción:
public SimpleXMLElement::addAttribute ( string $name [, string $value [, string
$namespace ]] ) : void
Añade un atributo al elemento SimpleXML.
PHP
16. SimpleXML y DOMDocument
SimpleXML y DOMDocument
●
Podemos relacionar fácilmente los archivos leídos desde SimpleXML a la
clase DOMDocument, entre otras cosas para dar un formato más legible.
PHP
17. El iterador SimpleXML
El iterador SimpleXML
●
●
Un iterador es un apuntador que nos permite recorrer todos los elementos,
ya que todos apuntan al siguiente elemento. Las principales métodos son:
Las principales operaciones de un iterador son:
○
○
○
○
○
○
○
rewind(), mueve el iterador al primer elemento.
key(), regresa la llave o clave del elemento actual.
current(), regresa el valor del elemento actual.
next(), mueve el iterador al próximo elemento.
valid(), verifica si hay más elementos para moverse.
getChildren(), Devuelve los sub nodos del elemento actual.
hasChildren(), Comprueba si el elemento actual tiene subelementos.
PHP
18. Exportar los datos a MySQL
Exportar los datos a MySQL
●
Una vez que hemos leído los datos del documento XML y los iteramos, nos
será muy sencillo subirlo a una base de datos.
Download