aXmlResult = array(); $oParser = xml_parser_create(); xml_set_object($oParser, $this); xml_set_element_handler($oParser, "StartTag", "CloseTag"); xml_set_character_data_handler($oParser, "TagContent"); if (!xml_parse($oParser, $sXml)) { return false; } xml_parser_free($oParser); return $this->aXmlResult[0]; } protected function StartTag($oParser, $sName, $sattributes) { $sTag = array("name" => $sName, "attributes" => $sattributes); array_push($this->aXmlResult, $sTag); } protected function TagContent($oParser, $sTagData) { if (trim($sTagData)) { if (isset($this->aXmlResult[count($this->aXmlResult) - 1]['content'])) { $this->aXmlResult[count($this->aXmlResult) - 1]['content'] .= $sTagData; } else { $this->aXmlResult[count($this->aXmlResult) - 1]['content'] = $sTagData; } } } protected function CloseTag($parser, $name) { $this->aXmlResult[count($this->aXmlResult) - 2]['items'][] = $this->aXmlResult[count($this->aXmlResult) - 1]; array_pop($this->aXmlResult); } } ?>