diff options
author | Lorry Tar Creator <lorry-tar-importer@baserock.org> | 2013-03-14 05:42:27 +0000 |
---|---|---|
committer | <> | 2013-04-03 16:25:08 +0000 |
commit | c4dd7a1a684490673e25aaf4fabec5df138854c4 (patch) | |
tree | 4d57c44caae4480efff02b90b9be86f44bf25409 /ext/xml/tests/xml002.phpt | |
download | php2-master.tar.gz |
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/xml/tests/xml002.phpt')
-rw-r--r-- | ext/xml/tests/xml002.phpt | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/ext/xml/tests/xml002.phpt b/ext/xml/tests/xml002.phpt new file mode 100644 index 0000000..ce547e8 --- /dev/null +++ b/ext/xml/tests/xml002.phpt @@ -0,0 +1,98 @@ +--TEST-- +XML parser test, object tuple callbacks +--SKIPIF-- +<?php +require_once("skipif.inc"); +XML_SAX_IMPL == 'libxml' && die('skip this test is not intended for libxml SAX parser'); +?> +--FILE-- +<?php +chdir(dirname(__FILE__)); + +class myclass +{ + function startElement($parser, $name, $attribs) + { + print '{'.$name; + if (sizeof($attribs)) { + while (list($k, $v) = each($attribs)) { + print " $k=\"$v\""; + } + } + print '}'; + } + function endElement($parser, $name) + { + print '{/'.$name.'}'; + } + function characterData($parser, $data) + { + print '{CDATA['.$data.']}'; + } + function PIHandler($parser, $target, $data) + { + print '{PI['.$target.','.$data.']}'; + } + function defaultHandler($parser, $data) + { + if (substr($data, 0, 1) == "&" && substr($data, -1, 1) == ";") { + print '{ENTREF['.$data.']}'; + } else { + print '{?['.$data.']}'; + } + } + function externalEntityRefHandler($parser, $openEntityNames, $base, $systemId, $publicId) + { + print '{EXTENTREF['.$openEntityNames.','.$base.','.$systemId.','.$publicId."]}\n"; + return true; + } +} + +$xml_parser = xml_parser_create(); +$obj = new myclass; +xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, 1); +xml_set_element_handler($xml_parser, array($obj,"startElement"), +array($obj, "endElement")); +xml_set_character_data_handler($xml_parser, array($obj, "characterData")); +xml_set_processing_instruction_handler($xml_parser, array($obj, "PIHandler")); +xml_set_default_handler($xml_parser, array($obj, "defaultHandler")); +xml_set_external_entity_ref_handler($xml_parser, +array($obj, "externalEntityRefHandler")); + +if (!($fp = @fopen("xmltest.xml", "r"))) { + die("could not open XML input"); +} + +while ($data = fread($fp, 4096)) { + if (!xml_parse($xml_parser, $data, feof($fp))) { + die(sprintf("XML error: %s at line %d\n", + xml_error_string(xml_get_error_code($xml_parser)), + xml_get_current_line_number($xml_parser))); + } +} +print "parse complete\n"; +xml_parser_free($xml_parser); + +?> +--EXPECT-- +{?[<?xml version="1.0" encoding="ISO-8859-1"?>]}{?[ +]}{?[<!DOCTYPE]}{?[ ]}{?[phptest]}{?[ ]}{?[SYSTEM]}{?[ ]}{?["notfound.dtd"]}{?[ ]}{?[[]}{?[ +]}{?[<!ENTITY]}{?[ ]}{?[%]}{?[ ]}{?[incent]}{?[ ]}{?[SYSTEM]}{?[ ]}{?["inc.ent"]}{?[>]}{?[ +]}{?[%incent;]}{?[ +]}{?[]]}{?[>]}{?[ +]}{ROOT ID="elem1"}{CDATA[ +]}{CDATA[ Plain text.]}{CDATA[ +]}{CDATA[ ]}{ELEM1}{CDATA[ +]}{CDATA[ ]}{?[<!-- comment -->]}{CDATA[ +]}{CDATA[ ]}{ELEM2}{CDATA[ +]}{CDATA[ ]}{?[<![CDATA[]}{CDATA[CDATA block]}{?[]]>]}{CDATA[ +]}{CDATA[ ]}{ELEM3}{CDATA[ +]}{CDATA[ ]}{ENTREF[&included-entity;]}{CDATA[ +]}{CDATA[ ]}{ELEM4}{CDATA[ +]}{CDATA[ ]}{PI[test,processing instruction ]}{CDATA[ +]}{CDATA[ ]}{/ELEM4}{CDATA[ +]}{CDATA[ ]}{/ELEM3}{CDATA[ +]}{CDATA[ ]}{/ELEM2}{CDATA[ +]}{CDATA[ ]}{/ELEM1}{CDATA[ +]}{/ROOT}{?[ +]}parse complete |