从XML文件中的特定商品循环

时间:2016-09-06 14:31:29

标签: php xml

是否有办法从特定元素/节点循环遍历XML文件。

例如,如果我想从此XML Feed中的<offer id="a2a9d7a3a520de69e8e06f3e53df1c49">开始:http://pastebin.com/n5myzcz1

那么可以在该ID之后加载所有要约吗?

1 个答案:

答案 0 :(得分:0)

我打算建议XPath但是既然你提到文件是1GB,你应该使用流式解析器,例如XMLReader(我现在读到你已经在使用它)。

你一定会进行线性搜索,因为你不知道你想要的元素在哪里,所以你必须经历所有这些元素才能找到它。

修改

只是一个深奥的想法可能是使用shell_execgrep文件来查找ID所在的行,然后使用sed或等效文件从该行切割文件。

编辑2

啊,这很有趣!!

$line = intval(shell_exec('grep -n a2a9d7a3a520de69e8e06f3e53df1c49 orders.xml | cut -d : -f1'));
$totalLines = intval(shell_exec('wc -l orders.xml'));
echo shell_exec("sed -n '".$line.",".$totalLines."p' orders.xml");

也许你只需要输入9999999999而不是计算总线数。当然不是说你应该;);)

我不知道这是否比使用XMLReader浏览文件更快,但我想由您来决定它是否值得。

我希望这可以为您提供进一步的解决方案。