Я работаю с PHP 5.3+, в частности, simplexml_load_string (). Я пытался найти решение в течение нескольких часов, но не повезло, поэтому любая помощь будет принята с благодарностью.
Мне нужен систематический способ идентификации всех имен тегов, присутствующих в файле XML на определенном уровне.
Пример XML:
<?xml version="1.0"?>
<properties>
<property>
<ID>243</ID>
<area>5,000</area>
<bathrooms>5</bathrooms>
<bedrooms>4</bedrooms>
<images>
<image>http://urltoimage.com/image1.jpg</image>
<image>http://urltoimage.com/image2.jpg</image>
</image>
</property>
<property>
<ID>332</ID>
<garage>2</garage>
<bathrooms>2</bathrooms>
<images>
<image>http://urltoimage.com/image5.jpg</image>
<image>http://urltoimage.com/image1.jpg</image>
</image>
</property>
<properties>
Мне нужно получить массив из:
- ID
- площадь
- ванные комнаты
- спальня
- гараж
Как вы видите, первый элемент 'property' не имеет 'гаража', поэтому все дочерние элементы в XML объединяются. Мне нужно иметь возможность идентифицировать все имена тегов, представленные ниже элемента 'property', в идеале исключая любые элементы, которые имеют дочерние элементы. Я мог бы работать с источниками, у которых есть дочерние элементы (в данном примере это «изображения»), но было бы неплохо, чтобы XPath также позаботился об этой части.
Причина этого в том, что мы агрегируем несколько XML-фидов данных свойств, которые имеют разные переменные тегов, и перед импортом нам необходимо иметь представление обо всех различных именах тегов, используемых в XML, прежде чем мы передадим эти данные через к остальной части программы.
Итак, есть ли запрос XPath, который можно построить? Производительность является фактором, и я не уверен, какова оптимальная конфигурация функции PHP, поэтому ищите предложения.