特定の要素/ノードからXMLファイルをループする方法はありますか?例えば特定のオファーからのループをXMLファイル
私は、このXMLフィードに<offer id="a2a9d7a3a520de69e8e06f3e53df1c49">
から起動する場合:http://pastebin.com/n5myzcz1
は、そのIDの後にすべてのオファーをロードすることが可能ですか?
特定の要素/ノードからXMLファイルをループする方法はありますか?例えば特定のオファーからのループをXMLファイル
私は、このXMLフィードに<offer id="a2a9d7a3a520de69e8e06f3e53df1c49">
から起動する場合:http://pastebin.com/n5myzcz1
は、そのIDの後にすべてのオファーをロードすることが可能ですか?
私はXPathを提案しようとしていましたが、ファイルが1GBだと言いますから、XMLReaderのようなストリーミングパーサーを使用する必要があります。
あなたが望む要素がどこにあるのかわからないので、線形検索が必要です。見つかるまですべてを調べなければなりません。
EDIT
ちょうど難解なアイデアは、IDがある行を見つけるためにshell_exec
ファイルgrep
とを用いて、次いでsed
又は同等物を使用して、その行からファイルを切断することができました。
EDIT 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");
多分、合計行をcaculatingする代わりに9999999999を置くことができます。あなたはもちろんそうではありません;);)
これはXMLReaderでファイルを通過するよりも速いのかどうか分かりませんが、それが価値があるかどうかを判断するのはあなた次第です。
あなたの問題を解決するためのさらなるアイデアをお寄せください。
何かすべきことをお寄せいただきありがとうございます! :-) –
@SimonThomsenどのように最後にこれを解決しましたか?私はあなたが思いついたものを見て非常に不思議です。ありがとう;) –
すべてのオファーとチェックIDをロードします。 –
問題は、そのファイルは約1GBなので、断片化する必要があります。 –
要するに、はいとはい – RamRaider