/* Currently (Feb 10, 2005) CVS HEAD fails with the following message: Fatal error: Invalid opcode 137/1/8. in /home/hartmut/projects/php/dev/head/ext/xml/tests/bug30266.php on line 22 */ class XML_Parser { public $dummy = "a"; function parse($data) { $parser = xml_parser_create(); xml_set_object($parser, $this); xml_set_element_handler($parser, 'startHandler', 'endHandler'); xml_parse($parser, $data, true); xml_parser_free($parser); } function startHandler($XmlParser, $tag, $attr) { $this->dummy = "b"; throw new Exception("ex"); } function endHandler($XmlParser, $tag) { } } $p1 = new Xml_Parser(); try { $p1->parse('<tag1><tag2></tag2></tag1>'); } catch (Exception $e) { echo "OK\n"; }
echo "notation_decl_handler called\n"; echo "...Name=" . $name . "\n"; echo "...Base=" . $base . "\n"; echo "...System ID=" . $system_ID . "\n"; echo "...Public ID=" . $public_ID . "\n"; } function parse($data) { $parser = xml_parser_create(); xml_set_object($parser, $this); xml_set_notation_decl_handler($parser, "notation_decl_handler"); xml_set_unparsed_entity_decl_handler($parser, "unparsed_entity_decl_handler"); xml_parse($parser, $data, true); xml_parser_free($parser); } } $xml = <<<HERE <?xml version="1.0"?> <!DOCTYPE dates [ <!NOTATION USDATE SYSTEM "http://www.schema.net/usdate.not"> <!NOTATION AUSDATE SYSTEM "http://www.schema.net/ausdate.not"> <!NOTATION ISODATE SYSTEM "http://www.schema.net/isodate.not"> <!ENTITY testUS SYSTEM "test_usdate.xml" NDATA USDATE> \t<!ENTITY testAUS SYSTEM "test_ausdate.xml" NDATA AUSDATE> \t<!ENTITY testISO SYSTEM "test_isodate_xml" NDATA ISODATE>]> ]> HERE; echo "Simple test of xml_set_notation_decl_handler(() function\n"; $p1 = new Xml_Parser(); $p1->parse($xml); echo "Done\n";
/** * Присвоение ноде содержимого или значения. * * @param string $data - значение ноды или содержимое * @param integer $flag - флаг обработки данных (1 - обработка тегов для xml, 0 - удаление html тегов) */ public function Set_Data($data, $flag = 1) { if (0 < $flag) { $this->_Data = Xml_Parser::String_Xml($data); } else { $this->_Data = Xml_Parser::String_Xml_NotHtml($data); } }
<?php /** * The entry point to the application. * Initialize and run. */ // Including the class App require 'config.php'; Zero_Logs::Init('app.log'); Zero_DB::Init(); $xml = new Xml_Parser(); $xml->Parser(PATH_EXCHANGE . '/test.xml', 'Xml_Handler_Test'); die('Done');