Denai
@Denai

Как удалить/получить из XML параметры?

Берём файл такого вида:
...
<offers>
<offer id="17" available="true">
<url>test.ru</url>
<name>тестовый элемент</name>
<param name="Вес">27</param>
<param name="Длина">16</param>
<param name="Хрупкий"/>
<param name="Синий">Да</param>
</offer>
<offer id="18" available="false">
<url>test2.ru</url>
<name>тестовый элемент2</name>
<param name="Вес">11</param>
<param name="Длина">89</param>
<param name="Жидкий"/>
<param name="Синий">Нет</param>
</offer>
.....

Я загружаю файл:
$ourfile = simplexml_load_file($name, 'SimpleXMLElement', LIBXML_NOBLANKS);

В нём могу обратиться к элементу, например убрать ненужную мне ссылку
foreach ($ourfile->offers->offer as $offer) {unset($offer->url);}

Или вывести/заменить нужные мне значения. Но с "param" я что-то делаю не так.
$offer->param["name"] - выведет имя параметра, это я осилил.
Мне нужно:
  • Удалить параметр, где указана длина
  • Вывести в переменную вес
  • Узнать хрупкий ли он

Собственно хотелось бы узнать как правильно это сделать.
  • Вопрос задан
  • 3050 просмотров
Решения вопроса 1
DevMan
@DevMan
Вам нужен XPath.
Получение веса:
echo $offer->xpath('param[@name="Вес"]')[0];

Дальше думаю сами осилите.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@oldzas
foreach ($item->param as $param){

$param = (array)$param;

print_r($param["@attributes"]["name"]);
print_r($param[0]);

}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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