我和格式不正確輸入XML文件(即,它具有「&」而不是「 &放大器;」) 當我嘗試加載使用PHP DOM這個XML,$ doc-> load(「file.xml」)它會拋出錯誤並停止解析。加載在PHP中無效的XML DOM
有什麼方法可以加載這個未格式化的XML?不,我不能編輯源XML文件。 我曾嘗試使用$ doc-> loadHTML(),但它會在各處引發錯誤。
我想知道是否有做一個適當的方式本(如加載文件的內容,並改變它使用正則表達式或類似的東西)
我和格式不正確輸入XML文件(即,它具有「&」而不是「 &放大器;」) 當我嘗試加載使用PHP DOM這個XML,$ doc-> load(「file.xml」)它會拋出錯誤並停止解析。加載在PHP中無效的XML DOM
有什麼方法可以加載這個未格式化的XML?不,我不能編輯源XML文件。 我曾嘗試使用$ doc-> loadHTML(),但它會在各處引發錯誤。
我想知道是否有做一個適當的方式本(如加載文件的內容,並改變它使用正則表達式或類似的東西)
首先,檢查它的&
這是造成錯誤,而不是別的東西。
無論如何,你必須修改XML才能解析它。 loadHTML
中的HTML是從字符串中加載的,難道你不能用正確的替換無效字符嗎?
如果您的安裝支持PHP Tidy擴展(http://php.net/manual/en/book.tidy.php),您可以嘗試使用它進行清理,儘管根據我的經驗,它遠非萬無一失。
如果您確信這使得它無法驗證的唯一的事情,那麼你可以嘗試加載文件轉換成字符串file_get_contents()
功能,然後搜索&通過字符串替換來改變&的成&
的,然後將該字符串放入simpleXML中,如$xml = simplexml_load_string($cleaned_string);
正如回覆上述海報發佈的那樣,當我加載有效的xml時,會導致問題。 – Nithin
是的,這是導致麻煩的&符號。我只是不想將所有&替換爲&-amp;原因,然後當我得到一個有效的XML作爲輸入它會導致問題。我對整潔的延伸知道不多。它看起來更像一個HTML工具,並且可以找到適合XML清理的適當函數。 – Nithin
我搜索了更多,Tidy似乎解決了這個問題。這是我就是這樣做:'$配置=陣列( \t \t \t '縮進'=>真, \t \t \t '輸入的XML'=>真, \t \t \t '輸出的XML'=> TRUE); $ clean = $ tidy-> repairString(file_get_contents($ file),$ config); ' – Nithin