逐个元素加载XML,以节省PHP中的内存

时间:2011-06-29 18:23:57

标签: php xml memory

我需要在低内存系统上读取XML文件(无权增加它)。 我试过了:

$xmlString = file_get_contents($file);
$doc= new DOMDocument();
$doc->loadXML($xmlString);

$doc= new DOMDocument();
$doc->load($file);

两者都给我记忆错误。

想知道是否有一种方法可以按节点顺序读取XML,因此在任何给定时间内只有1个节点在内存中。我不在乎这需要多长时间,因为这是一个夜间批处理过程。

XML的结构非常简单:

        <InventoryItem>
        <SKU>125244</SKU>
        <Quantity>137196</Quantity>
        <Status>Active</Status>
        </InventoryItem>
可能会重复一次。

也许将其视为文字?

非常感谢

2 个答案:

答案 0 :(得分:3)

你需要像XMLReader这样的拉解析器。

答案 1 :(得分:0)

您想使用SAX parsing(使用PHP functions或XMLReader,如另一个答案中所述。)