Пример #1
0
/**
 * Valida un el body de un mensaje soap contra el esquema XSD.
 * 
 * @param string $funcion
 *        	es el nombre del metodo que queremos validar.<br> Normalmente es
 *        	la constante __FUNCTION__ para validar el "request".
 * @return multitype array si hay un error y NULL en cualaquier otro caso.
 */
function validarMensajeXML($funcion)
{
    if (!isset($HTTP_RAW_POST_DATA)) {
        $HTTP_RAW_POST_DATA = implode("\r\n", file('php://input'));
    }
    $respError = new respuestaError();
    $domRequest = new DOMDocument();
    $domRequest->loadXML($HTTP_RAW_POST_DATA);
    /*$body = $domRequest->getElementsByTagName($funcion);
    	 //die(print_r($domRequest->saveXML($body->item("0"))));
    	 $domRequest->loadXML($domRequest->saveXML($body->item("0")));
    	 $domRequest->createAttributeNS("http://www.proyectomadre.es/catalogoServicios", "xmlns");
    	 $domRequest->loadXML($domRequest->saveXML());*/
    libxml_use_internal_errors(true);
    if (!$domRequest->schemaValidate(NOMBRE_WEB_SERVICE . ".xsd")) {
        $errors = libxml_get_errors();
        //die(print_r($errors));
        libxml_clear_errors();
        libxml_use_internal_errors(false);
        return $respError->errorValidacion($errors[0]->code, $errors[0]->message, $funcion);
    } else {
        return NULL;
    }
}