vcode = $reader->getAttribute('vcode'); $children = $reader->parseInnerTree(); foreach($children as $child) { if ($child['value'] instanceof Title) { $venue->titles[] = $child['value']; } } return $venue; } } class Title implements Xml\XmlDeserializable { // A list of performances. public $performances = []; public $name; public $primaData; public $ultimaData; public $id_show; public $editName; public $sottoCat; public $categoria; public $numPerf; static function xmlDeserialize(Xml\Reader $reader) { $title = new self(); // Parse attributes. $title->name = $reader->getAttribute('name'); $title->primaData = $reader->getAttribute('primaData'); $title->ultimaData = $reader->getAttribute('ultimaData'); $title->id_show = $reader->getAttribute('id_show'); // Parse key-value fields. $keyValue = Xml\Deserializer\keyValue($reader, ''); if (!empty($keyValue['editName'])) { $title->editName = $keyValue['editName']; } if (!empty($keyValue['sottoCat'])) { $title->sottoCat = $keyValue['sottoCat']; } if (!empty($keyValue['categoria'])) { $title->categoria = $keyValue['categoria']; } if (!empty($keyValue['numPerf'])) { $title->numPerf = $keyValue['numPerf']; } // Parse childrens $children = $reader->parseInnerTree(); foreach($children as $child) { if ($child['value'] instanceof Performance) { $title->performances[] = $child['value']; } } return $title; } } class Performance implements Xml\XmlDeserializable { public $code; public $lastminute; public $idEvento; public $stato; public $time; public $dataInizio; public $dataFine; public $minPrezzo; public $maxPrezzo; public $avail; public $hasMap; public $dataFineVendita; public $oraFineVendita; static function xmlDeserialize(Xml\Reader $reader) { $performance = new self(); $performance->code = $reader->getAttribute('code'); $performance->lastminute = $reader->getAttribute('lastminute'); $performance->idEvento = $reader->getAttribute('idEvento'); $performance->stato = $reader->getAttribute('stato'); $performance->time = $reader->getAttribute('time'); $performance->dataInizio = $reader->getAttribute('dataInizio'); $performance->dataFine = $reader->getAttribute('dataFine'); $performance->minPrezzo = $reader->getAttribute('minPrezzo'); $performance->maxPrezzo = $reader->getAttribute('maxPrezzo'); $performance->avail = $reader->getAttribute('avail'); $performance->hasMap = $reader->getAttribute('hasMap'); $performance->dataFineVendita = $reader->getAttribute('dataFineVendita'); $performance->oraFineVendita = $reader->getAttribute('oraFineVendita'); $reader->next(); return $performance; } }