@Eugene70

Как получить аттрибуты тегов?

Здравствуйте. Есть xml с товарами, в них есть параметры такого вида
<param name="Выход для наушников" unit="">Не</param>
<param name="Тюнер" unit="">Цифровой</param>
<param name="Частоты радиоволн FM" unit="">87.5 - 108 Мгц</param>
<param name="Сигнал тревоги" unit="">Радио, Звуковой</param>
<param name="Встроенные часы" unit="">Так</param>
<param name="Размеры (шир. x выс. x г)" unit="">191 x 69.5 x 103 мм</param>
<param name="Вес" unit="">330</param>
<param name="Регулировка тембра" unit="">Так</param>
<param name="Частоты радиосигналов DAB, DAB+" unit="">Не распространяется на</param>
<param name="Гарантия" unit="">24 месяца</param>
<param name="Таймер отключения (sleep timer)" unit="">Да</param>
<param name="Цвет корпуса" unit="">Черный</param>

После выполнения этого кода
$dom      = new \DOMDocument();
        $dom->loadXML($file);
        $s = simplexml_import_dom($dom);
        dd($s->shop->offers->offer[6]->param->attributes());

выводится аттрибут только первого param
SimpleXMLElement {#501 ▼
  +"@attributes": array:1 [▼
    "name" => "Выход для наушников"
  ]
}

Подскажите, что я делаю не так?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@Eugene70 Автор вопроса
Нужно изпользовать xpath
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Подскажите, что я делаю не так?
Не читаешь доку?
во первых, вам надо получить children от вашего offer[6] а не param, который первый из.
во вторых уже проитерировать:
https://www.php.net/manual/ru/simplexmlelement.att...
Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с использованием var_dump() или каких-либо других средств анализа объектов.
Ответ написан
Ваш ответ на вопрос

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

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