我從服務器獲取XML文件,有時我得到一個非有效的XML文件的DOMDocument XML的警告,因爲這樣我得到一個警告:避免在PHP
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in
哪有我發現這個警告並刪除了這個文件?
我從服務器獲取XML文件,有時我得到一個非有效的XML文件的DOMDocument XML的警告,因爲這樣我得到一個警告:避免在PHP
Warning: DOMDocument::load() [domdocument.load]: Start tag expected, '<' not found in
哪有我發現這個警告並刪除了這個文件?
你有兩種選擇。請在您的load()
調用中使用@
差錯控制操作員,例如@$dom->load()
,由於它將display_errors的值全局更改爲off,執行該函數並將其重新設置爲on,因此速度稍慢。
另一種選擇,這是我個人比較喜歡(我討厭@
操作,我無法忍受看到它在我的代碼)是挽救libxml_use_internal_errors舊值,使用libxml_use_internal_errors(TRUE)
啓用它,調用函數,明確錯誤緩衝並恢復舊值。下面是我的代碼片段,做的是:
<?php
$previous_value = libxml_use_internal_errors(TRUE);
$doc->loadHTML((string)$e->response->getBody());
libxml_clear_errors();
libxml_use_internal_errors($previous_value);
我不能解答發表評論,所以我會在這裏寫:
[email protected]:~$ php -r '$dom=new DOMDocument; $dom->strictErrorChecking = FALSE ; $dom->loadHTML("<xy></zx>");' PHP Warning: DOMDocument::loadHTML(): Tag xy invalid in Entity, line: 1 in Command line code on line 1
關閉嚴格的錯誤檢查:
$dom = new DOMDocument();
$dom->strictErrorChecking = FALSE ;
$dom->load('/path/to/file.xml');
if (!$dom->validate()) {
// Invalid XML!
}
我怎麼知道天氣的XML有效或沒有?如果我收到此警告,我想刪除該文件並再次下載... –
@iUngi請參見上面的'DOMDocument :: validate()' –
set_error_handler("yourHandler", E_WARNING);
以上的其他部分,並在驗證XML文件後使用restore_error_handler()。 –
的確,感謝編輯,我習慣寫JS功能:) –
[try and catch a warning]的可能重複(http://stackoverflow.com/questions/1241728/try-and-catch-a-warning)(更廣泛的答案) –