@heahoh
Full stackoverflow developer

Php simple xml как выполнить xpath на узел?

При парсинге выгрузки из 1с столкнулся с проблемой, что xpath работает только на весь файл, как при выборе жесткого, так и относительного пути. Однако на полученный элемент, который тоже является объектом simple_xml_element xpath работать отказывается, даже если пытаюсь выбрать все ноды объекта через '//*'. В чем может быть проблема, может кто знает.

Как подсказал уважаемый krypt3r: необходимо указывать относительный путь, не использовать корневой слэш в начале.
  • Вопрос задан
  • 530 просмотров
Решения вопроса 1
@heahoh Автор вопроса
Full stackoverflow developer
Забирается необходимый кусок выгрузки (товары, категории, офферы или еще что)
$path = explode('/', $className->part);
$path = implode('/' . $this->ns, $path);
$this->xml->xpath('//' . $this->ns . $path);
Для товаров
public $part = 'Каталог/Товары';
Потом
foreach ($this->xml[0] as $item) {
// Какие-либо действия с нодом.
// Однако xpath на ноду уже не работает
}

Как оказалось было 2 проблемы:
1) для каждой ноды нужно устанавливать нэймспэйс
2) xpath запрос к ноду опрашивает весь родительский элемент, то есть xpath выполняется к $xml вместо $item
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@krypt3r
Ни тестового примера, ни кода, ничего... Что мы должны ответить?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
18 апр. 2024, в 21:56
2000 руб./за проект
18 апр. 2024, в 21:00
150 руб./за проект