2012-09-11 101 views
5

我有兩個文件:的DOMDocument :: schemaValidate()拋出警告錯誤

  • 示例XML文件。
  • 上述XML文件必須遵守的.xsd文件w/schema。

要根據模式驗證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文檔不符合架構中的規則警告錯誤。

警告:DOM文檔:: schemaValidate()[domdocument.schemavalidate]: 元 '標頭':不預期此元素。預計是(路由)

我一直在故意搞砸我的XML文件,只是爲了看看$ dom-> schemaValidate實際如何處理它。顯然,當XML不符合模式時,我不希望PHP將警告消息分發到頁面上。相反,我希望我的應用能夠照顧到這一點。我在這裏忽略了什麼嗎?

回答

8

你必須爲了抑制警告,並開始收集XML解析錯誤到通過libxml_get_errors訪問的內部結構()創建新的DOMDocument()之前調用

libxml_use_internal_errors(true);