即使文件坏了,有没有办法读取XML文件?
我正在尝试在将文件写入文件时获取XML文件并将其输出,但由于根元素未被关闭,因为它正处于写入状态,因此我收到了错误的错误。 p>
无论如何如何实现这个目标?
答案 0 :(得分:1)
$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>
*/
答案 1 :(得分:0)
使用文件锁定或使您的写入原子化,以便其他进程看不到半写文件。有关这两种方法的代码,请参阅this answer的中间部分。
您还可以通过处理并发性的内容来调解您的写入,并为您提供一致的读取和写入,即数据库。它不一定是一个完整的独立过程 - 您可以使用sqlite或简单的key-value store。