Manual de PHP: XML
XML
La extensión SimpleXML de PHP permite convertir un documento XML en un objeto que puede ser procesado con selectores de propiedades e iteradores de matrices.
Recursos
- Ayuda de PHP: XML Manipulation
- Acceder a elementos únicos
Veamos cómo acceder a elementos únicos de un documento XML similar a:
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <name>10 Years</name> ... </feed>
Por ejemplo, para obtener name el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); echo $xml->name; ?>
- Acceder a elementos no únicos
Veamos cómo acceder a elementos no únicos de un documento XML similar a:
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <tag> <name>rock</name> </tag> <tag> <name>metal</name> </tag> <tag> <name>post-grunge</name> </tag> ... </feed>
Por ejemplo, para obtener todos los tag->name el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); foreach ($xml->tag as $tag) { echo $tag->name; } ?>
- Acceder a atributos
Veamos cómo acceder a los atributos de un documento XML similar a:
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <link rel="alternate" href="http://www.domain.com"/> <image size="small">http://www.domain.com/images/44.jpg</image> <image size="large">http://www.domain.com/images/55.jpg</image> ... </feed>
Por ejemplo, para obtener el atributo href de link el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); echo $xml->link->attributes()->href; ?>
Para obtener los campos image utilizando el atributo size para filtrar, el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); foreach ($xml->image as $image) { switch((string) $image['size']) { case 'small': echo $image; break; case 'large': echo $image; break; } } ?>
- Trabajar con namespaces
Dado que en XML los nombres de las etiquetas (elementos) son definidos por el desarrollador, se suelen utilizar prefijos para evitar conflictos entre documentos XML procedentes de distintas fuentes. Cuando se utilizan prefijos se debe especificar el XML namespace (espacio de nombres XML) mediante la etiqueta xmlns. Veamos cómo acceder a los elementos namespace de un documento XML similar a:
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns:media="http://search.yahoo.com/mrss/"> ... <entry> <media:group> <media:title type="plain">10 Years - Wasteland</media:title> <media:player url="http://www.domain.com/watch?v=ciuca"/> </media:group> </entry> ... </feed>
Por ejemplo, para obtener media:title y media:player el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); $media = $xml->entry->children('http://search.yahoo.com/mrss/'); echo $media->group->title; echo $media->group->player->attributes()->url; ?>
- Modificar valores
SimpleXML permite modificar los datos de un documento XML. Por ejemplo, para modificar name y convertir este documento XML...
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <name>10 Years</name> ... </feed>
... en este otro...
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <name>Miss Coder</name> ... </feed>
... el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); $xml->name = "Miss Coder"; ?>
- Añadir elementos y atributos
SimpleXML permite añadir elementos y atributos en un documento XML. Por ejemplo, para convertir este documento XML...
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <movie> <characters> <character> <name>Megan</name> <actor>Anna Smith</actor> </character> </characters> </movie> ... </feed>
... en este otro...
<?xml version="1.0" encoding="UTF-8"?> <feed> ... <movie> <characters> <character> <name>Megan</name> <actor>Anna Smith</actor> </character> <character> <name>Mr. Parser</name> <actor>John Doe</actor> </character> </characters> <rating type="mpaa">PG</rating> </movie> ... </feed>
... el código será:
<?php $feed = "http://www.domain.com/feed/info.xml"; // volcar el feed en un objeto SimpleXML $xml = simplexml_load_file($feed); // añadir character $character = $xml->movie[0]->characters->addChild('character'); $character->addChild('name', 'Mr. Parser'); $character->addChild('actor', 'John Doe'); // añadir rating $rating = $xml->movie[0]->addChild('rating', 'PG'); $rating->addAttribute('type', 'mpaa'); ?>
1 comentario en “Manual de PHP: XML”
Deja un comentario
Hola mira una pregunta, es que necesito acer un formulario desde PHP que me Guarde , Modifique y Elimine en un XML y la vverdad no tengo idea me podrias ayudar y responder a mi E-mail
Muchas gracias