在将XML文件写入PHP时读取XML文件

时间:2013-03-11 19:27:22

标签: php xml xmlreader xmlwriter

即使文件坏了,有没有办法读取XML文件?

我正在尝试在将文件写入文件时获取XML文件并将其输出,但由于根元素未被关闭,因为它正处于写入状态,因此我收到了错误的错误。 p>

无论如何如何实现这个目标?

2 个答案:

答案 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