Search code examples
phpxmlsimplexml

Missing data when I use simplexml_load_string()


When I use simplexml_load_string in php like this:

$response = '<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:domain="http://epp.nic.ir/ns/domain-1.0">
    <response xmlns:domain="http://epp.nic.ir/ns/domain-1.0">
        <result code="1000">
            <msg>Command completed successfully</msg>
        </result>
        <resData xmlns:domain="http://epp.nic.ir/ns/domain-1.0">
            <domain:chkData xmlns:domain="http://epp.nic.ir/ns/domain-1.0">
                <domain:cd>
                    <domain:name normalized_name="dsfdsfdsfsdfdffdg"
                                 canonized_name="dsfdsfdsfsdfdffdg" tld="ir" avail="1">
                        dsfdsfdsfsdfdffdg.ir
                    </domain:name>
                </domain:cd>
            </domain:chkData>
        </resData>
        <trID>
            <clTRID>TEST-14922533391168726112</clTRID>
            <svTRID>IRNIC_2017-04-15T15:18:59+04:30_epi</svTRID>
        </trID>
    </response>
</epp>';
$a = simplexml_load_string($response);
var_dump($a);

When I display $a I have no resData value, and I missing this property. How can I fix this?


Solution

  • Thank @splash58.
    I should use namespace like this:

    $a = simplexml_load_string($result);
    $ns = $a->getNamespaces(true);
    var_dump($a->response->resData->children($ns['domain']));