Я следующее (очень большой => 5ГБ) XML:Fetch XML-узлов с помощью Path
<Hotels>
<Hotel>
<Name>Hotel 1</Name>
<City>City 1</City>
<Phone>12345</Phone>
</Hotel>
<Hotel>
<Name>Hotel 2</Name>
<City>City 2</City>
<Phone>67890</Phone>
</Hotel>
...
</Hotels>
И у меня есть файл, который определяет, какие поля я хочу, чтобы извлечь и то, что их путь:
$root = "/Hotels/Hotel";
$fields = array("HotelName" => "/Name",
"PhoneNumber" => "/Phone");
Таким образом, путь для HotelName
будет: /Hotels/Hotel/Name
.
Теперь я хочу получить информацию для каждого отеля. Я не могу создавать для них классы (например, here), потому что сценарий должен быть динамически, и будут переданы разные XML-файлы с различными файлами определений.
Как решить эту проблему с помощью путей, без классов и с низким использованием памяти (=> больших файлов)?
// Редактировать: все реализовано. Мне просто нужен способ итерации через Hotel
и получить их значения с помощью путей, которые у меня есть.
Для «очень больших» (насколько это возможно?) XML-файлов, которые вы, возможно, захотите рассмотреть, чтобы сбрасывать их в реляционную базу данных (кажется, что этот XML-файл фактически представляет собой таблицу) или использование родного XML-база данных, например [Basex] (http://www.basex.org). –
Насколько велики эти файлы? – user1121883
Файлы могут быть размером 5 ГБ. Я экспортирую их в csv, поэтому я могу импортировать их в MySQL с помощью «LOAD DATA INFILE». – halloei