DOMDocument :: schemaValidate()抛出警告错误

时间:2012-09-11 11:15:23

标签: php xml simplexml

我有两个文件:

  • 示例XML文件。
  • 带有架构的.xsd文件,上述XML文件必须遵守该文件。

要根据模式验证XML文件,我一直在使用:

$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
}

但是,只要我的XML文档不符合架构中的规则,我就会不断收到警告错误。

  

警告:DOMDocument :: schemaValidate()[domdocument.schemavalidate]:   元素'标题':不期望此元素。预计是(路由)

我一直故意搞砸我的XML文件,只是为了看看$ dom-> schemaValidate如何实际处理它。显然,当XML不符合架构时,我不希望PHP将警告消息吐出到页面上。相反,我希望我的应用程序能够处理这个问题。我在这里忽略了什么吗?

1 个答案:

答案 0 :(得分:8)

你必须致电

libxml_use_internal_errors(true);

在创建新的DOMDocument()之前,为了抑制警告并开始将XML解析错误收集到可通过libxml_get_errors()访问的内部结构中。