Поток разобрать 4 ГБ XML-файл в PHP
Я пытаюсь, и мне нужна помощь, чтобы сделать следующее:
Я хочу проанализировать большой XML-файл (4 ГБ) в потоковом режиме с помощью PHP. Я не могу использовать простой XML или DOM, потому что они загружают весь файл в память, поэтому мне нужно что-то, что может передавать файл.
Как я могу сделать это в PHP?
То, что я пытаюсь сделать, это перемещаться по серии<doc>
элементы. И записать некоторых своих детей в новый XML-файл.
Файл XML, который я пытаюсь проанализировать, выглядит следующим образом:
<feed>
<doc>
<title>Title of first doc is here</title>
<url>URL is here</url>
<abstract>Abstract is here...</abstract>
<links>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
</link>
</doc>
<doc>
<title>Title of second doc is here</title>
<url>URL is here</url>
<abstract>Abstract is here...</abstract>
<links>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
<sublink>Link is here</sublink>
</link>
</doc>
</feed>
Я пытаюсь получить / скопировать всех детей каждого<doc>
элемент в новый файл XML, кроме<links>
стихия и ее дети.
Поэтому я хочу, чтобы новый XML-файл выглядел следующим образом:
<doc>
<title>Title of first doc is here</title>
<url>URL is here</url>
<abstract>Abstract is here...</abstract>
</doc>
<doc>
<title>Title of second doc is here</title>
<url>URL is here</url>
<abstract>Abstract is here...</abstract>
</doc>
Я был бы очень признателен за любую помощь вstreaming / потоковый анализ / stream читает исходный XML-файл и затем записывает часть его содержимого в новый XML-файл на PHP.