Before and After: Reading XML into a Tree

The most common XML task is reading an XML document and printing out its contents. DOM and SimpleXML store XML documents in trees. This allows you to easily maneuver though the document to find information because if you know where your node is located, you can access it directly.

Reading an Address Book

The following programs take an XML document, read it into a tree, and then find a set of nodes. They all use the example address book from Example 5-1 as their data, search for all the people nodes, and then print out everyone’s first and last name.

The first two versions use DOM, one written in PHP 4 and the other in PHP 5. There is also a SimpleXML version, which is considerably shorter.

PHP 4 and DOM

Example 5-5 demonstrates the PHP 4 DOM extension.

Example 5-5. Reading XML with PHP 4 and DOM

$dom = domxml_open_file('address-book.xml');

foreach ($dom->get_elements_by_tagname('person') as $person) {
    $firstname = $person->get_elements_by_tagname('firstname');
    $firstname_text = $firstname[0]->first_child( );
    $firstname_text_value = $firstname_text->node_value( );

    $lastname = $person->get_elements_by_tagname('lastname'));
    $lastname_text = $lastname[0]->first_child( );
    $lastname_text_value = $lastname_text->node_value( );

    print "$firstname_text_value $lastname_text_value\n";

Rasmus Lerdorf
                     Zeev Suraski

Under PHP 4, DOM method names use underscores ( _ ) to separate words, such as get_elements_by_tagname( ) and first_child( ).

To find all elements ...

Get Upgrading to PHP 5 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.