当前位置: 首页>>代码示例>>PHP>>正文


PHP xml_set_element_handler函数代码示例

本文整理汇总了PHP中xml_set_element_handler函数的典型用法代码示例。如果您正苦于以下问题:PHP xml_set_element_handler函数的具体用法?PHP xml_set_element_handler怎么用?PHP xml_set_element_handler使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了xml_set_element_handler函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: xmlParser

 function xmlParser()
 {
     $this->xml_obj = xml_parser_create();
     xml_set_object($this->xml_obj, $this);
     xml_set_character_data_handler($this->xml_obj, 'dataHandler');
     xml_set_element_handler($this->xml_obj, "startHandler", "endHandler");
 }
开发者ID:retnan,项目名称:TrunkSMS,代码行数:7,代码来源:class.xml.parser.php

示例2: __construct

 /**
  * Constructs FormFilter
  * @access public
  */
 function __construct()
 {
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'open', 'close');
     xml_set_character_data_handler($this->parser, 'data');
 }
开发者ID:jaywilliams,项目名称:ultralite,代码行数:11,代码来源:Form.php

示例3: parse

 public function parse($xml_or_arr)
 {
     if (is_array($xml_or_arr)) {
         $output = array();
         foreach ($xml_or_arr as $val) {
             $to = $this->parse($val);
             $output = array_merge($output, $to);
         }
         return $output;
     }
     //		echo '<h1>xml in parser:</h1><pre>'; print_r($xml); echo '</pre>';
     // if we don't start with a processing instruction,
     // we add an outer node just to ensure it's a valid xml document
     // (i.e. only a single root node)
     if (substr($xml_or_arr, 0, 2) != '<?') {
         $xml_or_arr = "<{$this->insertedNode}>" . $xml_or_arr . "</{$this->insertedNode}>";
     }
     $this->parser = xml_parser_create();
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, "tagOpen", "tagClosed");
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
     xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
     xml_set_character_data_handler($this->parser, "tagData");
     $this->xmldata = xml_parse($this->parser, $xml_or_arr);
     if (!$this->xmldata) {
         die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser)));
     }
     xml_parser_free($this->parser);
     $this->parseCompleted();
     return $this->output;
 }
开发者ID:ilri,项目名称:genebank-gg_server,代码行数:31,代码来源:parsers.php

示例4: setHandlers

 /**
  * Set handlers
  *
  * @access public
  * @param resource xml_parser instance
  * 
  */
 public function setHandlers($a_xml_parser)
 {
     xml_set_object($a_xml_parser, $this);
     xml_set_element_handler($a_xml_parser, 'handlerBeginTag', 'handlerEndTag');
     xml_set_character_data_handler($a_xml_parser, 'handlerCharacterData');
     return;
 }
开发者ID:arlendotcn,项目名称:ilias,代码行数:14,代码来源:class.ilSaxController.php

示例5: __construct

 function __construct()
 {
     $this->xml = xml_parser_create();
     xml_set_object($this->xml, $this);
     xml_set_character_data_handler($this->xml, 'dataHandler');
     xml_set_element_handler($this->xml, 'startHandler', 'endHandler');
 }
开发者ID:HaakonME,项目名称:porticoestate,代码行数:7,代码来源:class.http_svn_client.inc.php

示例6: __construct

 function __construct($charset = 'UTF-8')
 {
     $this->conf = array();
     $this->conf['error'] = '<br /><strong>Error on line %s of ' . __FILE__ . '</strong>: %s<br />';
     $this->conf['cache_path'] = dirname(__FILE__);
     $this->conf['cache_time'] = 180;
     $this->conf['debug_mode'] = true;
     $this->conf['fetch_mode'] = ONYX_FETCH_ASSOC;
     if (!function_exists('xml_parser_create')) {
         $this->raiseError(__LINE__ - 2, ONYX_ERR_NO_PARSER);
         return false;
     }
     if ($charset == 'native') {
         $charset = LANG_CHARSET;
     }
     $this->parser = @xml_parser_create($charset);
     if (!is_resource($this->parser)) {
         $this->raiseError(__LINE__ - 3, ONYX_ERR_NO_PARSER);
         return false;
     }
     xml_set_object($this->parser, $this);
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
     @xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, LANG_CHARSET);
     xml_set_element_handler($this->parser, 'tag_open', 'tag_close');
     xml_set_character_data_handler($this->parser, 'cdata');
 }
开发者ID:Juuro,项目名称:Dreamapp-Website,代码行数:26,代码来源:RSS.php

示例7: parse

 function parse($xml)
 {
     $this->result = array();
     $this->context = $xml;
     $this->currentTag = '';
     $this->currentState = array();
     $this->xmlParser = xml_parser_create();
     xml_parser_set_option($this->xmlParser, XML_OPTION_TARGET_ENCODING, "UTF-8") . xml_set_object($this->xmlParser, $this);
     xml_set_element_handler($this->xmlParser, 'startElement', 'endElement');
     xml_set_character_data_handler($this->xmlParser, 'content');
     $this->trigger('before:import');
     try {
         if (!xml_parse($this->xmlParser, $xml)) {
             $this->xmlParserError = 'Line ' . xml_get_current_line_number($this->xmlParser) . ': ' . (xml_get_error_code($this->xmlParser) ? xml_error_string(xml_get_error_code($this->xmlParser)) : 'Unknown error');
         }
     } catch (Exception $e) {
         $this->xmlParserError = $e->getMessage();
     }
     xml_parser_free($this->xmlParser);
     if ($this->xmlParserError) {
         $this->raiseError($this->xmlParserError);
     } else {
         if ($this->getCurrentState()) {
             $this->raiseError('Wrong ending state: ' . $this->getCurrentState());
         } else {
         }
     }
     $this->trigger('after:import');
     return $this->result;
 }
开发者ID:jagermesh,项目名称:bright,代码行数:30,代码来源:BrXMLParser.php

示例8: fetch

 public function fetch()
 {
     $this->query = $this->url . '?pid=' . $this->pid . '&noredirect=true&format=unixref&id=doi%3A' . $this->doi;
     $request_options = array('method' => 'POST');
     $result = drupal_http_request($this->query, $request_options);
     if ($result->code != 200) {
         drupal_set_message(t('HTTP error: !error when trying to contact crossref.org for XML input', array('!error' => $result->code)), 'error');
         return;
     }
     if (empty($result->data)) {
         drupal_set_message(t('Did not get any data from crossref.org'), 'error');
         return;
     }
     $sxml = @simplexml_load_string($result->data);
     if ($error = (string) $sxml->doi_record->crossref->error) {
         drupal_set_message($error, 'error');
         return;
     }
     $this->nodes = array();
     $this->parser = drupal_xml_parser_create($result->data);
     // use case-folding so we are sure to find the tag in
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, FALSE);
     xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, TRUE);
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'unixref_startElement', 'unixref_endElement');
     xml_set_character_data_handler($this->parser, 'unixref_characterData');
     if (!xml_parse($this->parser, $result->data)) {
         drupal_set_message(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser)), 'error');
     }
     xml_parser_free($this->parser);
     return $this->node;
 }
开发者ID:khoegenauer,项目名称:exframe,代码行数:32,代码来源:biblio.crossref.client.php

示例9: __construct

 public function __construct($input, $maxDepth = 20)
 {
     if (!is_string($input)) {
         throw new XmlToArrayException('No valid input.');
     }
     $this->_maxDepth = $maxDepth;
     $XMLParser = xml_parser_create();
     xml_parser_set_option($XMLParser, XML_OPTION_SKIP_WHITE, false);
     xml_parser_set_option($XMLParser, XML_OPTION_CASE_FOLDING, false);
     xml_parser_set_option($XMLParser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
     xml_set_character_data_handler($XMLParser, array($this, '_contents'));
     xml_set_default_handler($XMLParser, array($this, '_default'));
     xml_set_element_handler($XMLParser, array($this, '_start'), array($this, '_end'));
     xml_set_external_entity_ref_handler($XMLParser, array($this, '_externalEntity'));
     xml_set_notation_decl_handler($XMLParser, array($this, '_notationDecl'));
     xml_set_processing_instruction_handler($XMLParser, array($this, '_processingInstruction'));
     xml_set_unparsed_entity_decl_handler($XMLParser, array($this, '_unparsedEntityDecl'));
     if (!xml_parse($XMLParser, $input, true)) {
         $errorCode = xml_get_error_code($XMLParser);
         $message = sprintf('%s. line: %d, char: %d' . ($this->_tagStack ? ', tag: %s' : ''), xml_error_string($errorCode), xml_get_current_line_number($XMLParser), xml_get_current_column_number($XMLParser) + 1, implode('->', $this->_tagStack));
         xml_parser_free($XMLParser);
         throw new XmlToArrayException($message, $errorCode);
     }
     xml_parser_free($XMLParser);
 }
开发者ID:rodhoff,项目名称:MNW,代码行数:25,代码来源:xml_to_array.php

示例10: load

 protected function load()
 {
     global $zf_opmlItems, $zf_opmlMode;
     /* default values for parsing this opml file */
     $zf_opmlItems = array();
     $xml_parser = xml_parser_create();
     xml_set_element_handler($xml_parser, "zf_opmlStartElement", "zf_opmlEndElement");
     zf_debug('Opening file ' . $this->opmlfilename, DBG_OPML);
     @($fp = fopen($this->opmlfilename, "r"));
     $data = "";
     if ($fp) {
         $data = fread($fp, filesize($this->opmlfilename));
         fclose($fp);
         $xmlResult = xml_parse($xml_parser, $data);
         $xmlError = xml_error_string(xml_get_error_code($xml_parser));
         $xmlCrtline = xml_get_current_line_number($xml_parser);
         xml_parser_free($xml_parser);
         unset($data);
         if ($xmlResult) {
             $this->subscriptions = $zf_opmlItems;
             unset($zf_opmlItems);
         } else {
             $this->lastError = "Error parsing subscriptions file <br />error: {$xmlError} at line: {$xmlCrtline}";
             zf_debug("{$xmlError} at line: {$xmlCrtline}", DBG_OPML);
             return false;
         }
     } else {
         $this->lastError = 'Error opening the subscriptions file!';
         return false;
     }
     $this->_sanitize();
     return true;
 }
开发者ID:mm999,项目名称:zebrafeeds,代码行数:33,代码来源:subscriptionstorage.php

示例11: parseFile

 function parseFile($fileLocation)
 {
     // reset it.
     $this->_docType = NULL;
     $this->_nameSpace = NULL;
     $this->_errors = NULL;
     $fp = @fopen($fileLocation, 'r');
     if ($fp) {
         $parser = xml_parser_create('ISO-8859-1');
         xml_set_object($parser, $this);
         xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, FALSE);
         xml_set_element_handler($parser, "_startElement", "_endElement");
         while ($data = fread($fp, 1024)) {
             if (strlen($this->_docType) > 0) {
                 break;
             }
             if (!xml_parse($parser, $data, feof($fp))) {
                 $error = xml_error_string(xml_get_error_code($parser));
                 break;
             }
         }
         xml_parser_free($parser);
         @fclose(fp);
         return TRUE;
     } else {
         $this->_errors[] = 'File ' . $fileLocation . ' could not be opened.';
         return FALSE;
     }
 }
开发者ID:horrabin,项目名称:opendb,代码行数:29,代码来源:DocTypeNameSpaceXMLParser.class.php

示例12: fetch

 function fetch($raw_xml, $final = true)
 {
     $this->log .= 'fetch() called.' . PHP_EOL;
     $this->log .= 'Raw XML:' . PHP_EOL . $raw_xml . PHP_EOL . PHP_EOL;
     $this->index = 0;
     $this->data = new stdClass();
     $this->stack = array();
     $this->stack[] =& $this->data;
     $this->parser = xml_parser_create('UTF-8');
     xml_set_object($this->parser, $this);
     xml_set_element_handler($this->parser, 'tag_open', 'tag_close');
     xml_set_character_data_handler($this->parser, 'cdata');
     xml_parser_set_option($this->parser, XML_OPTION_TARGET_ENCODING, 'UTF-8');
     xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
     xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, false);
     $start = 0;
     $length = strlen($raw_xml);
     $chunk_size = 32 * 1024 * 1024;
     $ret = true;
     while (true) {
         if (!($parsed_xml = xml_parse($this->parser, substr($raw_xml, $start, $chunk_size), $final = ($start += $chunk_size) >= $length ? true : false))) {
             $this->log .= $ret = sprintf('XML error: %s at line %d.', xml_error_string(xml_get_error_code($this->parser)), xml_get_current_line_number($this->parser));
             break;
         } else {
             if ($final) {
                 break;
             }
         }
     }
     xml_parser_free($this->parser);
     return $ret;
 }
开发者ID:nickhype,项目名称:HackeyWalk-site-backup,代码行数:32,代码来源:xml.php

示例13: AbstractSAXParser

 function AbstractSAXParser()
 {
     // create a parser
     $this->parserResource = xml_parser_create();
     if (isset($this->parserResource)) {
         // allowing object instance to use the xml parser
         xml_set_object($this->parserResource, $this);
         // set tag event handler
         xml_set_element_handler($this->parserResource, "startTagElement", "endTagElement");
         // set CDATA event handler
         xml_set_character_data_handler($this->parserResource, "cdataElement");
         // set processing instruction handler
         xml_set_processing_instruction_handler($this->parserResource, "instructionElement");
         // set undeclare entity
         xml_set_unparsed_entity_decl_handler($this->parserResource, "undeclaredEntityElement");
         // set notation delcaration handler
         xml_set_notation_decl_handler($this->parserResource, "notationDeclarationElement");
         // set external entity handler
         xml_set_external_entity_ref_handler($this->parserResource, "externalEntityElement");
         // seat default parser option
         xml_parser_set_option($this->parserResource, XML_OPTION_SKIP_WHITE, 1);
         xml_parser_set_option($this->parserResource, XML_OPTION_CASE_FOLDING, 0);
         xml_parser_set_option($this->parserResource, XML_OPTION_TARGET_ENCODING, 'UTF-8');
     }
 }
开发者ID:alexpagnoni,项目名称:jphp,代码行数:25,代码来源:AbstractSAXParser.php

示例14: replaceTranslation

 public function replaceTranslation()
 {
     //write xml header
     fwrite($this->outputFP, '<?xml version="1.0" encoding="UTF-8"?>');
     //create parser
     $xml_parser = xml_parser_create('UTF-8');
     //configure parser
     //pass this object to parser to make its variables and functions visible inside callbacks
     xml_set_object($xml_parser, $this);
     //avoid uppercasing all tags name
     xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, false);
     //define callbacks for tags
     xml_set_element_handler($xml_parser, "tagOpen", "tagClose");
     //define callback for data
     xml_set_character_data_handler($xml_parser, "characterData");
     //read a chunk of text
     while ($this->currentBuffer = fread($this->originalFP, 4096)) {
         /*
           preprocess file
         */
         // obfuscate entities because sax automatically does html_entity_decode
         $temporary_check_buffer = preg_replace("/&(.*?);/", '#%$1#%', $this->currentBuffer);
         $lastByte = $temporary_check_buffer[strlen($temporary_check_buffer) - 1];
         //avoid cutting entities in half:
         //the last fread could have truncated an entity (say, '&lt;' in '&l'), thus invalidating the escaping
         //***** and if there is an & that it is not an entity, this is an infinite loop !!!!!
         $escape_AMP = false;
         // 9 is the max length of an entity. So, suppose that the & is at the end of buffer,
         // add 9 Bytes and substitute the entities, if the & is present and it is not at the end
         //it can't be a entity, exit the loop
         while (true) {
             $_ampPos = strpos($temporary_check_buffer, '&');
             //check for real entity or escape it to safely exit from the loop!!!
             if ($_ampPos === false || strlen(substr($temporary_check_buffer, $_ampPos)) > 9) {
                 $escape_AMP = true;
                 break;
             }
             //if an entity is still present, fetch some more and repeat the escaping
             $this->currentBuffer .= fread($this->originalFP, 9);
             $temporary_check_buffer = preg_replace("/&(.*?);/", '#%$1#%', $this->currentBuffer);
         }
         //free stuff outside the loop
         unset($temporary_check_buffer);
         $this->currentBuffer = preg_replace("/&(.*?);/", '#%$1#%', $this->currentBuffer);
         if ($escape_AMP) {
             $this->currentBuffer = str_replace("&", '#%amp#%', $this->currentBuffer);
         }
         //get lenght of chunk
         $this->len = strlen($this->currentBuffer);
         //parse chunk of text
         if (!xml_parse($xml_parser, $this->currentBuffer, feof($this->originalFP))) {
             //if unable, die
             die(sprintf("XML error: %s at line %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
         }
         //get accumulated this->offset in document: as long as SAX pointer advances, we keep track of total bytes it has seen so far; this way, we can translate its global pointer in an address local to the current buffer of text to retrieve last char of tag
         $this->offset += $this->len;
     }
     //close parser
     xml_parser_free($xml_parser);
 }
开发者ID:indynagpal,项目名称:MateCat,代码行数:60,代码来源:XliffSAXTranslationReplacer.php

示例15: XMLToArray

 function XMLToArray($data, $ignore = array(), $replace = array(), $showattribs = false, $toupper = false)
 {
     $this->_showAttribs = $showattribs;
     $this->_parser = xml_parser_create();
     xml_set_object($this->_parser, $this);
     if ($toupper) {
         foreach ((array) $ignore as $key => $value) {
             $this->_ignore[strtoupper($key)] = strtoupper($value);
         }
         foreach ((array) $replace as $key => $value) {
             $this->_replace[strtoupper($key)] = strtoupper($value);
         }
         xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, true);
     } else {
         $this->_ignore =& $ignore;
         $this->_replace =& $replace;
         xml_parser_set_option($this->_parser, XML_OPTION_CASE_FOLDING, false);
     }
     xml_set_element_handler($this->_parser, '_startElement', '_endElement');
     xml_set_character_data_handler($this->_parser, '_cdata');
     $this->_data = array();
     $this->_level = 0;
     if (!xml_parse($this->_parser, $data, true)) {
         //new Error("XML Parse Error: ".xml_error_string(xml_get_error_code($this->_parser))."n on line: ".xml_get_current_line_number($this->_parser),true);
         return false;
     }
     xml_parser_free($this->_parser);
 }
开发者ID:reuf,项目名称:laravel-vzaar,代码行数:28,代码来源:XMLToArray.php


注:本文中的xml_set_element_handler函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。