@lolrofl01

Как правильно парсить xml при использовании laravel?

Появилась необходимость парсить xml файл, в котором строки повторяются. Пример:
<item url="sk=21&gr=12231769">Гондурас. Национальная лига </item>
<item url="sk=21&gr=12231820">Никарагуа. Примера дивизион </item>
<item url="sk=21&gr=12231742">США. USL Чемпионшип </item>
<item url="sk=21&gr=12231464">Бахрейн. Премьер-лига </item>
<item url="sk=21&gr=12231916">Иордания. Про-лига </item>


Пробовал php функцию: simplexml_load_string

Отлично парсит каждую позицию, но вот значение url, видимо, никак не получить.

Пробовал библиотеку orchestra/parser.
Код:
$array = $source->parse([
                    'item' => ['uses' => 'sport.item']
                 ]);


Выдает только первую строчку из xml. Можно добавить [] после item, чтобы код стал таким:
$array = $source->parse([
                    'item' => ['uses' => 'sport.item[]']
                 ]);


Тогда в массиве появляется то же количество элементов, что и строк в xml. Это радует, но элементы все содержат null. Выглядит это так:
array:1 [▼
  "item" => array:125 [▼
    0 => array:1 [▼
      "" => null
    ]
    1 => array:1 [▼
      "" => null
    ]
    2 => array:1 [▼
      "" => null
    ]
    3 => array:1 [▼
      "" => null
    ]
]
]


Ума не приложу, как парсить так, чтобы на выходе был массив со всеми записями, из xml, и url из строк item url.
Подскажите, пожалуйста, куда смотреть.
  • Вопрос задан
  • 1857 просмотров
Пригласить эксперта
Ответы на вопрос 1
@XapoH17
Посмотрите здесь: https://github.com/orchestral/parser/blob/master/t...

$currencies = collect($xml->parse([
    'code' => ['uses' => 'Valute[CharCode]'],
]));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы