0

I can't figure out how to parse this XML response though I tried working with namespaces and simpleXML but still no result...any Ideas?

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header />
    <SOAP-ENV:Body>
        <ns3:GetDistrictByAddressResponse xmlns:ns3="http://il/co/bar/webservices/getdistrictbyaddress">
            <TimeFrameTable>
                <CustomerNumber>250</CustomerNumber>
                <Row>
                    <WindowDate>10052016</WindowDate>
                    <WeekDay>Sunday</WeekDay>
                    <FromHour>1130</FromHour>
                    <ToHour>1430</ToHour>
                </Row>
                <Row>
                    <WindowDate>10052016</WindowDate>
                    <WeekDay>Sunday</WeekDay>
                    <FromHour>1430</FromHour>
                    <ToHour>1730</ToHour>
                </Row>
            </TimeFrameTable>
        </ns3:GetDistrictByAddressResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2
  • Which information do you need from it ? Commented May 8, 2016 at 16:38
  • Only Row entries Commented May 8, 2016 at 16:47

1 Answer 1

7

xpath is your friend:

xpath('//Row');

Full example:

$soap = <<< LOL
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header />
    <SOAP-ENV:Body>
        <ns3:GetDistrictByAddressResponse xmlns:ns3="http://il/co/bar/webservices/getdistrictbyaddress">
            <TimeFrameTable>
                <CustomerNumber>250</CustomerNumber>
                <Row>
                    <WindowDate>10052016</WindowDate>
                    <WeekDay>Sunday</WeekDay>
                    <FromHour>1130</FromHour>
                    <ToHour>1430</ToHour>
                </Row>
                <Row>
                    <WindowDate>10052016</WindowDate>
                    <WeekDay>Sunday</WeekDay>
                    <FromHour>1430</FromHour>
                    <ToHour>1730</ToHour>
                </Row>
            </TimeFrameTable>
        </ns3:GetDistrictByAddressResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
LOL;
$xml = simplexml_load_string($soap);
foreach ($xml->xpath('//Row') as $item)
{
    print_r($item);
}

Output:

SimpleXMLElement Object
(
    [WindowDate] => 10052016
    [WeekDay] => Sunday
    [FromHour] => 1130
    [ToHour] => 1430
)
SimpleXMLElement Object
(
    [WindowDate] => 10052016
    [WeekDay] => Sunday
    [FromHour] => 1430
    [ToHour] => 1730
)

Ideone Demo

Sign up to request clarification or add additional context in comments.

1 Comment

in my case it is not working, as i showed up here, please help! stackoverflow.com/questions/43983841/php-parsing-a-soap-xml

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.