Source for file XMLParser.php
Documentation is available at XMLParser.php
* @author Greg Beaver <cellog@php.net>
* @author Stephan Schmidt (original XML_Unserializer code)
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license New BSD License
* @version CVS: $Id: XMLParser.php 313023 2011-07-06 19:17:11Z dufuz $
* @link http://pear.php.net/package/PEAR
* @since File available since Release 1.4.0a1
* Parser for any xml file
* @author Greg Beaver <cellog@php.net>
* @author Stephan Schmidt (original XML_Unserializer code)
* @copyright 1997-2009 The Authors
* @license http://opensource.org/licenses/bsd-license New BSD License
* @version Release: 1.9.4
* @link http://pear.php.net/package/PEAR
* @since Class available since Release 1.4.0a1
* @var string $_serializedData
var $_unserializedData = null;
* stack for all data that is found
var $_dataStack = array ();
* stack for all values that are generated
var $_valStack = array ();
* The XML encoding to use
return $this->_unserializedData;
* @param string xml content
* @return true|PEAR_Error
$this->_dataStack = $this->_valStack = array ();
strpos($data, 'encoding="UTF-8"')
|| strpos($data, 'encoding="utf-8"')
|| strpos($data, "encoding='UTF-8'")
|| strpos($data, "encoding='utf-8'")
* Start element handler for XML parser
* @param object $parser XML parser object
* @param string $element XML element
* @param array $attribs attributes of XML tag
function startHandler ($parser, $element, $attribs)
$this->_dataStack[$this->_depth] = null;
'childrenKeys' => array (),
if (count($attribs) > 0 ) {
$val['children'] = array ();
$val['children']['attribs'] = $attribs;
* @param string $element element name
* End element handler for XML parser
* @param object XML parser object
function endHandler ($parser, $element)
$data = $this->postProcess($this->_dataStack[$this->_depth], $element);
// adjust type of the value
$value['children']['_content'] = $data;
$value['value'] = isset ($value['children']) ? $value['children'] : array ();
* unserialize a null value
* unserialize any scalar value
$this->_unserializedData = &$value['value'];
$this->_root = &$value['name'];
// parent has to be an array
if (!isset ($parent['children']) || !is_array($parent['children'])) {
$parent['children'] = array ();
if ($parent['type'] != 'array') {
$parent['type'] = 'array';
if (!empty ($value['name'])) {
// there already has been a tag with this name
if (in_array($value['name'], $parent['childrenKeys'])) {
// no aggregate has been created for this tag
if (!in_array($value['name'], $parent['aggregKeys'])) {
if (isset ($parent['children'][$value['name']])) {
$parent['children'][$value['name']] = array ($parent['children'][$value['name']]);
$parent['children'][$value['name']] = array ();
array_push($parent['aggregKeys'], $value['name']);
array_push($parent['children'][$value['name']], $value['value']);
$parent['children'][$value['name']] = &$value['value'];
array_push($parent['childrenKeys'], $value['name']);
* Handler for character data
* @param object XML parser object
function cdataHandler ($parser, $cdata)
$this->_dataStack[$this->_depth] .= $cdata;
Documentation generated on Wed, 06 Jul 2011 23:31:44 +0000 by phpDocumentor 1.4.3. PEAR Logo Copyright © PHP Group 2004.
|