SimpleXmlElement и XPath, получая пустой массив ()

У меня небольшая проблема с анализом XML из ответа на проверку Google. XML идет прямо с сервера google, поэтому никаких проблем с самим XML не возникает.

Я хочу получить все теги уведомления нового порядка

Я попробовал это, но каждый раз возвращал пустой массив ().

$xml = new SimpleXmlElement($raw_xml); $notifications = $xml->xpath('notifications'); $notifications = $xml->xpath('/notification-history-response/notifications/new-order-notification'); $notifications = $xml->xpath('//new-order-notification'); 

Снайпер XML (только начало)

 <notification-history-response xmlns="http://checkout.google.com/schema/2" serial-number="c5cda190-0eb1-4f91-87cd-e656e5598d38"> <notifications> <new-order-notification serial-number="271578974677716-00001-7"> <buyer-billing-address> <address1>19 sandbox st</address1> <address2></address2> 

Вероятно, проблема – это пространство имен по умолчанию. Видеть

  • SimpleXMLElement::registerXPathNamespace
    Создает префикс / ns-контекст для следующего запроса XPath

Пример:

 $sxe->registerXPathNamespace('x', 'http://checkout.google.com/schema/2'); $result = $sxe->xpath('//x:notifications'); 

В качестве альтернативы, если нет других пространств имен, просто удалите пространство имен по умолчанию с помощью

 str_replace('xmlns="http://checkout.google.com/schema/2"', '', $raw_xml); 

перед подачей XML в ваш SimpleXmlElement.