xpath('satz/@typ'); if (0 < count($responseTypeXml)) { $responseType = (string) $xml->xpath('satz/@typ')[0]; } switch ($responseType) { case ApiClient::TYPE_NOTIFICATION: return (new NotificationResponseParser())->parse($xml); case ApiClient::TYPE_CUSTOMER_DATA: $subType = (string) $xml->art; switch ($subType) { case 'Adressdaten': case 'Adressdaten_Ändern': return (new PersonalDataResponseParser())->parse($xml); case 'SelektionCRM': case 'SelektionCRM_Ändern': return (new CrmAttributesResponseParser())->parse($xml); case 'Vorgänge': return (new BookingsResponseParser())->parse($xml); case 'Vorgang_Details': return (new BookingResponseParser())->parse($xml); case 'Dokumentdruck': return (new DocumentsResponseParser())->parseDocuments($xml); case 'Vorgangdruck': return (new DocumentsResponseParser())->parseConfirmation($xml); } break; case ApiClient::TYPE_BASE_DATA_COUNTRIES: return (new CountriesResponseParser())->parse($xml); case ApiClient::TYPE_MUTABLE_FIELDS: return (new MutableFieldsResponseParser())->parse($xml); case ApiClient::TYPE_AVAILABILITY: return (new AvailabilitiesResponseParser())->parse($xml); } throw new ResponseParserException('Unable to parse XML response'); } }