2012-09-11 11 views
5

Tengo dos archivos:DOMDocument :: schemaValidate() errores de advertencia que lanza

  • Un archivo XML de ejemplo.
  • Un archivo .xsd con esquema, que el archivo XML antes mencionado debe cumplir.

para validar el archivo XML con el esquema, He estado usando:

$dom = new DOMDocument(); 

//$this->xmlstr; is my XML file after being loaded into a string. 
$dom->loadXML($this->xmlstr); 

//$xsd_file is definitely my xsd file. 
if(!$dom->schemaValidate($xsd_file)){ 
    $errors = libxml_get_errors(); //supposed to give back errors? 
    var_dump($errors); //debugging - shows: array empty 
} 

Sin embargo, sigo obteniendo errores de advertencia cada vez que mi documento XML no se adhiere a las reglas del esquema.

Advertencia: DOMDocument :: schemaValidate() [domdocument.schemavalidate]: Elemento 'Header': No se espera que este elemento. Es de esperar (Routing)

he estado jodiendo intencionalmente mi archivo XML, sólo para ver cómo $ dom-> schemaValidate realidad lo maneja. Obviamente, no quiero que PHP escuche mensajes de advertencia en la página cada vez que el XML no cumpla con el esquema. En cambio, me gustaría que mi aplicación se encargue de eso. ¿Estoy pasando por alto algo aquí?

Respuesta

8

Debe llamar

libxml_use_internal_errors(true); 

antes de crear nuevo DOMDocument() con el fin de suprimir las advertencias y comenzar a recoger los errores de análisis XML en la estructura interna accesible a través de libxml_get_errors().

Cuestiones relacionadas