/** * Parse an XML response from the validator * * This function parses a SOAP 1.2 response xml string from the validator. * * @param string $xml The raw soap12 XML response from the validator. * * @return Response object Response if parsing soap12 response successfully, * * @throws Exception */ protected function parseSOAP12Response($xml) { $doc = new \DOMDocument('1.0', 'UTF-8'); if ($doc->loadXML($xml) === false) { throw new Exception('Failed load xml'); } $response = new Response(); // Get the standard CDATA elements foreach (array('uri', 'checkedby', 'csslevel', 'date') as $var) { $element = $doc->getElementsByTagName($var); if ($element->length) { $response->{'set' . ucfirst($var)}($element->item(0)->nodeValue); } } // Handle the bool element validity $element = $doc->getElementsByTagName('validity'); if ($element->length && $element->item(0)->nodeValue === 'true') { $response->setValidity(true); } else { $response->setValidity(false); } if (!$response->isValidity()) { $errors = $doc->getElementsByTagName('error'); foreach ($errors as $error) { $response->addError(new Error($error)); } } $warnings = $doc->getElementsByTagName('warning'); foreach ($warnings as $warning) { $response->addWarning(new Warning($warning)); } return $response; }