PHP парсинг XML param в yandex.xml

215
29 марта 2017, 18:49

Подскажите, пожалуйста, как прочитать и вывести данные из файла XML? Есть файл стандарта yandex

<yml_catalog date='******'>
<shop>
<categories>
<category id='34'>Аккумуляторы</category>
.......
</categories>
<offers>
<offer id='1' type='vendor.model' available='false'>
....
<name>Аккумулятор 1</name>
....
<param name='Напряжение' unit='В'>12.00</param>
<param name='Ёмкость' unit='Ач'>2.40</param>
<param name='Тип (технология)'>Ni-Cd </param>
<param name='Время зарядки' unit='мин'>60.00</param>
<param name='Вес' unit='кг'>0.32</param>
<param name='Комплектация'></param>
</offer>
<offer id='2' type='vendor.model' available='false'>
....
<name>Аккумулятор 2</name>
....
<param name='Напряжение2' unit='В'>442.00</param>
<param name='Ёмкость2' unit='Ач'>42.40</param>
<param name='Тип (технология)2'>Ni-Cd </param>
<param name='Время зарядки2' unit='мин'>260.00</param>
<param name='Вес2' unit='кг'>20.32</param>
<param name='Комплектация2'>dsadsdd</param>
</offer>
</offers>
</shop>

У меня уже есть цикл чтения всех данных, кроме param. Как оформить чтение именно param равному каждому офферу?

Делал так

foreach ($offers->shop->offers->offer[0]->param as $param) {
$chname=$param['name'];
$chunit=$param["unit"];
$chdigits=$param;
}

но оно не идет по циклу всего файла, а выводит постоянно только первый блок параметров (повторяет одно и тоже) и в поселедующих "offer id"...

Так:

Аккумулятор1
  -парам1
  -парам1
  -парам1
Аккумулятор2
  -парам1
  -парам1
  -парам1

Как эот реализовать, чтобы возможно как-то с верхнего уровня передавался идентификатор where id=1, id=2 и так далее? Или другие способы перепрыгивать и выводить правильно.. Но не нашел, как ставить условие.

Чтоб было так:

Аккумулятор1
  -парам1
  -парам1
  -парам1
Аккумулятор2
  -парам2
  -парам2
  -парам2
Answer 1

Все, нашел ответ. Первый цикл значений у меня был такой

foreach ( $offers->shop->offers->offer as $offer ) :

Для вывода param просто

foreach ($offer->param as $param) {

) и работает. Спасибо за Naumov за коммент)

READ ALSO
Не могу изменить часовой пояс php

Не могу изменить часовой пояс php

Не могу понять откуда берется часовой поясВ php

224
phpmyadmin не добавляет в базу данные

phpmyadmin не добавляет в базу данные

перешёл с Windows на Linux Mint , на Windows на сервере выполнялись все php скрипты , развернул сервер на Linux и скрипт не добавляет данные в базу , предполагаю...

222
Проблема с правами доступа + PHP + Windows 7

Проблема с правами доступа + PHP + Windows 7

Написал скрипт для отправки файла по почте:

276