#!/www/server/bin/php -qC $xmldata"; $xml = new $classname($xmldata, $p); is( preg_replace('/[#\s]+/', " ", print_r($xml->$varname, true)), $expected, "$name (string)" ); $tmpfile = tmpfile(); fwrite($tmpfile, $xmldata); rewind($tmpfile); $xml = new $classname($tmpfile, $p); fclose($tmpfile); is( preg_replace('/[#\s]+/', " ", print_r($xml->$varname, true)), $expected, "$name (file)" ); } match( '', 'foo Object ( ) ', 'empty tag' ); match( '', 'Array ( [0] => foo Object ( ) [1] => foo Object ( ) ) ', 'multiple empty tags converted to array' ); match( 'Stüssihofstadt', 'foo Object ( [attr] => Array ( [title] => Zürich ) [val] => Stüssihofstadt ) ', 'simple tag with latin1 content and attribute' ); match( '', 'foo Object ( [a_b__c] => a_b__c Object ( [attr] => Array ( [d_e_f] => value ) ) ) ', 'Tags and attributes with name space and special characters' ); match( 'x & y', 'foo Object ( [val] => x & y ) ', 'Character data with entities' ); match( '&amp; <a> &amp; <b> &amp; <c> ü', 'foo Object ( [val] => & & & ü ) ', 'Predecode illegal entities while keeping properly encoded ones', ); match( '&amp; <a> &amp; <b> &amp; <c> ü', utf8_encode('foo Object ( [val] => & & & ü ) '), 'Predecode illegal entities while keeping properly encoded ones (UTF-8)', "", array('encoding' => "UTF-8"), ); # Test inheritance class my_xml extends it_xml { function my_xml($xmldata) { parent::it_xml($xmldata); # Code which should be executed in root and only there $this->qux = new it_xml; $this->qux->val = "qux"; if (is_object($this->myfoo)) $this->myfoo->inheritbaseclass = is_a($this->myfoo, "my_xml"); } } match( '', 'myfoo Object ( [inheritbaseclass] => ) ', 'Inheritance and constructor (critical for e.g. tel_xmlentry)', 'my' ); $x = new foo("", 'prefix' => "test"); $x->set('gna' => 42, 'bar' => array('baz' => array("qux", "quux"))); match( $x->to_xml(), 'foo Object ( [gna] => gna Object ( [val] => 42 ) [bar] => bar Object ( [baz] => Array ( [0] => baz Object ( [val] => qux ) [1] => baz Object ( [val] => quux ) ) ) ) ', "Method set()", ); ?>