Можно ли хранить адрес свойства объекта в переменной? типа ‘shop->offers’

Forward5

Всем привет,
Нужно парсить xml фиды, Сам xml файл считывается в объект SimpleXML.

например чтобы пройтись по свойствам товаров делаю:

PHP:
  1. $feedData=simplexml_load_file($fidurl);
  2. $exp=$feedData->offers->offer;
  3.  
  4. foreach ($exp as $offer=>$param){
  5. //код
  6. }

Но структура и адрес до нужного тега может отличаться, и быть например $feedData->shop->offers->offer или вместо offers может быть items и т.п., так вот, возможно ли сделать что-то типа такого:

PHP:
  1. $offerpath=‘shop->items->item’;
  2. $offers=$feedData->$offerpath;
  3. // дальше перебираем универсально через foreach

Такой вариант не работает, но может есть правильный синтаксис?

 

Forward5

Пока придумал такой вариант:

PHP:
  1.  $path=‘shop->items->item’;
  2.     $exp=$feedData;
  3.     $path=explode(‘->’,$path);
  4.     foreach ($path as $lvl){
  5.         $exp=$exp->{$lvl};
  6.        
  7.     }

Если есть решение лучше буду рад

 

MouseZver

Велосипед от которого смысла 0

 

Drunkenmunky

PHP:
  1. <?php
  2. $xml = simplexml_load_file(‘file.xml’);
  3. $result = $xml->xpath(«//offer»);
  4. print_r($result);
  5. ?>
 

Forward5

Да, это лучше, Спасибо!

 

php8guru

Проблема будет если xml большой.
Почитайте про xmlreader
Там на этапе чтения будете выбирать толтко узлы offer

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *