*/ error_reporting(E_ALL); // this is a simple XML document $xml = '' . ' Stephan Schmidt' . ' Martin Jansen' . ' PEAR QA Team' . ' This is handled by the default keyAttribute' . ' Another foo tag' . ''; require_once 'XML/Unserializer.php'; // complex structures are arrays, the key is the attribute 'handle' or 'name', if handle is not present $options = array( XML_UNSERIALIZER_OPTION_COMPLEXTYPE => 'array', XML_UNSERIALIZER_OPTION_ATTRIBUTE_KEY => array( 'user' => 'handle', 'group' => 'name', '#default' => 'id' ) ); // be careful to always use the ampersand in front of the new operator $unserializer = &new XML_Unserializer($options); // userialize the document $status = $unserializer->unserialize($xml, false); if (PEAR::isError($status)) { echo 'Error: ' . $status->getMessage(); } else { $data = $unserializer->getUnserializedData(); echo '
';
    print_r($data);
    echo '
'; } // unserialize it again and change the complexType option // but leave other options untouched // now complex types will be an object, and the property name will be in the // attribute 'handle' $status = $unserializer->unserialize($xml, false, array(XML_UNSERIALIZER_OPTION_COMPLEXTYPE => 'object')); if (PEAR::isError($status)) { echo 'Error: ' . $status->getMessage(); } else { $data = $unserializer->getUnserializedData(); echo '
';
    print_r($data);
    echo '
'; } // unserialize it again and change the complexType option // and reset all other options // Now, there's no key so the tags are stored in an array $status = $unserializer->unserialize($xml, false, array(XML_UNSERIALIZER_OPTION_OVERRIDE_OPTIONS => true, XML_UNSERIALIZER_OPTION_COMPLEXTYPE => 'object')); if (PEAR::isError($status)) { echo 'Error: ' . $status->getMessage(); } else { $data = $unserializer->getUnserializedData(); echo '
';
    print_r($data);
    echo '
'; } ?>