SimpleXmlElement and XPath, getting empty array()
php, simplexml, xml-namespaces, xpath
Solution
The issue is likely the default namespace. See
- `SimpleXMLElement::registerXPathNamespace` Creates a prefix/ns context for the next XPath query
Example:
$sxe->registerXPathNamespace('x', 'http://checkout.google.com/schema/2');
$result = $sxe->xpath('//x:notifications');
As an alternative if there is no other namespaces, simply remove the default namespace with
str_replace('xmlns="http://checkout.google.com/schema/2"', '', $raw_xml);
before feeding the XML to your SimpleXmlElement.
Problem
I am having a little trouble with parsing XML from a google checkout response. The XML is coming straight from the google server so there is no problem with the XML itself. I want to get hold of all the new-order-notification tags I tried this but get an empty array() returned everytime. ``` $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'); ``` An XML snipet (Just the beginning) ``` <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> ```