Imprimir

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

  • 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”

  • David dice:

    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

Deja un comentario