stack[count($this->stack)]=&$pos;
$this->stack_ref=&$pos;
}
function pop_pos()
{
unset($this->stack[count($this->stack)-1]);
$this->stack_ref=&$this->stack[count($this->stack)-1];
}
function parse($strInputXML)
{
$this->resParser = xml_parser_create ();
xml_set_object($this->resParser,$this);
xml_set_element_handler($this->resParser, "tagOpen", "tagClosed");
xml_set_character_data_handler($this->resParser, "tagData");
$this->push_pos($this->arrOutput);
$this->strXmlData = xml_parse($this->resParser,$strInputXML );
if(!$this->strXmlData)
{
die(sprintf("XML error: %s at line %d",
xml_error_string(xml_get_error_code($this->resParser)),
xml_get_current_line_number($this->resParser)));
}
xml_parser_free($this->resParser);
return $this->arrOutput;
}
function tagOpen($parser, $name, $attrs)
{
if (isset($this->stack_ref[$name]))
{
if (!isset($this->stack_ref[$name][0]))
{
$tmp=$this->stack_ref[$name];
unset($this->stack_ref[$name]);
$this->stack_ref[$name][0]=$tmp;
}
$cnt=count($this->stack_ref[$name]);
$this->stack_ref[$name][$cnt]=array();
if (isset($attrs))
$this->stack_ref[$name][$cnt]=$attrs;
$this->push_pos($this->stack_ref[$name][$cnt]);
}
else
{
$this->stack_ref[$name]=array();
if (isset($attrs))
$this->stack_ref[$name]=$attrs;
$this->push_pos($this->stack_ref[$name]);
}
}
function tagData($parser, $tagData)
{
if(trim($tagData))
{
if(isset($this->stack_ref['DATA']))
$this->stack_ref['DATA'] .= $tagData;
else
$this->stack_ref['DATA'] = $tagData;
}
}
function tagClosed($parser, $name)
{
$this->pop_pos();
}
}
function getSoapAttribute($allAttrs, $attrName, $multisingle=ATTR_SINGLEVALUE)
{
$attrs = array ();
foreach ($allAttrs as $a) {
if ($a['N'] == $attrName){
$attrs[] = $a['DATA'];
if ($multisingle == ATTR_SINGLEVALUE) break;
}
}
if ($multisingle == ATTR_MULTIVALUE)
return $attrs;
else
return $attrs[0];
}
////////////////
// Exceptions //
////////////////
function print_exception($ex)
{
if (PHP_SAPI != "cli") {
$nl = "
";
$pre1 = "
"; $pre2 = ""; } else { $nl = "\n"; $pre1 = $nl.$nl; $pre2 = $nl.$nl; } echo "Exception caught!...".$nl.$nl."EXCEPTION START <<<<<<<<<<< "; echo $pre1 . $ex . $pre2; echo ">>>>>>>>>>>> EXCEPTION END".$nl; } /////////////// // Variables // /////////////// function print_var($var, $titre = "") { if (PHP_SAPI != "cli") { $nl = "
"; $pre2 = ""; if ($titre) { $sep = "