即使文件已損壞,是否有讀取XML文件的方法?在寫入XML文件時讀取XML文件PHP
我試圖在文件被寫入並輸出時得到一個XML文件,但由於根元素沒有關閉,因爲它正處於寫入過程中,所以我得到一個壞的錯誤。
是否有反正如何實現這一目標?
即使文件已損壞,是否有讀取XML文件的方法?在寫入XML文件時讀取XML文件PHP
我試圖在文件被寫入並輸出時得到一個XML文件,但由於根元素沒有關閉,因爲它正處於寫入過程中,所以我得到一個壞的錯誤。
是否有反正如何實現這一目標?
$broken ='<root>
<item>foo</item>';
$d = new DOMDocument();
$d->loadXML($broken);
echo $d->saveXML($d); // useless, only prologue
$d->recover = true; // <-- it's limited, but will try its best.
$d->loadXML($broken);
echo $d->saveXML($d);
/*
* <?xml version="1.0" encoding="UTF-8"?>
* <root>
* <item>foo</item></root>
*/
我必須先保存固定的XML文件? – 2013-03-11 19:47:24
如果你願意......我只用' - > saveXML()'作爲一種方法來顯示它是否儘可能多地恢復了XML。在調用' - > loadXML()'後,你可以用'DOMDocument'完成任何你想做的事情。 – Wrikken 2013-03-11 19:49:06
謝謝,是否可以刪除頁面頂部的錯誤? – 2013-03-11 19:52:49
請使用文件鎖定或使您的寫入原子,以便其他進程不會看到一半寫入的文件。有關這兩種方法的代碼,請參閱this answer的中間部分。
您還可以通過爲您處理併發性的事情來調解您的寫入,併爲您提供一致的讀取和寫入操作,即數據庫。它不一定是一個完整的獨立進程 - 你可以使用sqlite或簡單的key-value store。
我們可以問你爲什麼要達到這個目的嗎?等待文件寫入完成然後抓取有什麼問題? – 2013-03-11 19:29:42
由於文件是一個大文件,需要一段時間才能完成,因此我想在完成之前輸出內容。 – 2013-03-11 19:30:47
是否需要_need_'xmlreader'或者'DOMDocument'好? – Wrikken 2013-03-11 19:33:24