2016-09-06 1 views
1

特定の要素/ノードからXMLファイルをループする方法はありますか?例えば特定のオファーからのループをXMLファイル

私は、このXMLフィードに<offer id="a2a9d7a3a520de69e8e06f3e53df1c49">から起動する場合:http://pastebin.com/n5myzcz1

は、そのIDの後にすべてのオファーをロードすることが可能ですか?

+0

すべてのオファーとチェックIDをロードします。 –

+0

問題は、そのファイルは約1GBなので、断片化する必要があります。 –

+1

要するに、はいとはい – RamRaider

答えて

0

私は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でファイルを通過するよりも速いのかどうか分かりませんが、それが価値があるかどうかを判断するのはあなた次第です。

あなたの問題を解決するためのさらなるアイデアをお寄せください。

+0

何かすべきことをお寄せいただきありがとうございます! :-) –

+0

@SimonThomsenどのように最後にこれを解決しましたか?私はあなたが思いついたものを見て非常に不思議です。ありがとう;) –

関連する問題