0

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

我正在尝试获取一个 XML 文件,同时将文件写入其中并输出它,但由于根元素未关闭,因为它正在写入中间,所以我收到了一个错误错误。

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

4

2 回答 2

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>
 */
于 2013-03-11T19:34:35.757 回答
0

要么使用文件锁定,要么让你的写入原子化,这样其他进程就看不到半写的文件。有关这两种方法的代码,请参阅此答案的中间部分。

您还可以通过为您处理并发并为您提供一致的读取和写入的东西(即数据库)来调解您的写入。它不必是一个成熟的独立过程——您可以使用 sqlite 或简单的键值存储

于 2013-03-11T19:34:59.173 回答