Проблема в том, что у вас есть другой элемент между вашим корневым узлом и элементом <ad:ad>
.Вам нужно пройти через элемент <search:ads>
...
$ns = $xml->children('http://services.mobile.de/schema/search')->ads
->children('http://services.mobile.de/schema/ad');
Чтобы получить доступ к деталям рекламы, вам нужно снова взглянуть на структуру и увидеть, какие элементы вы хотите и в каком пространстве имен они находятся.Таким образом, для текста элемента категории каждого объявления вы можете использовать цикл и ...
$ns = $xml->children('http://services.mobile.de/schema/search')->ads
->children('http://services.mobile.de/schema/ad');
foreach($ns as $ad) {
foreach ( $ad->vehicle as $vehicle ) {
echo (string)$vehicle->category[0]
->children("http://services.mobile.de/schema/resource")
->{'local-description'}.PHP_EOL;
}
}
Пара вещей с этим заключается в том, что элемент <resource:local-description>
находится в другом пространстве имен,вот почему он использует ->children()
с этим другим пространством имен.Также, поскольку имя содержит -
, вы должны получить к нему доступ, используя ->{'local-description'}
, чтобы сделать его действительным именем.
Наконец - поскольку все это вернет элемент, на который оно указывает, вы должны привести его кстрока (используя (string)
в начале), чтобы убедиться, что в итоге вы получите только текст из элемента.