might be obvious, but not to everyone ;-) ... when reading attributes from a node that has sub-nodes (and creating an output from this node), the output will be issued twice, once on the <ELEMENT> tag and once on the end tag </ELEMENT>. To avoid this, you can test on which part of the node you are using the property nodeType.
It'll be 1 for the element, 15 for the end element.
(PHP 5 >= 5.1.0)
XMLReader::getAttribute — Get the value of a named attribute
Returns the value of a named attribute or
NULL if the
attribute does not exist or not positioned on an element node.
The name of the attribute.
The value of the attribute, or
NULL if no attribute with the given
name is found or not positioned on an element node.