#1 data format returned by SOAP


      
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
        <OGHeader transactionID="000032" timeStamp="2021-03-09T00:00:00" xmlns="http://webservices.micros.com/og/4.3/Core/">
            <Origin entityID="ORS" systemType="ORS" />
            <Destination entityID="PETRAVEL" systemType="WEB" />
        </OGHeader>
    </soap:Header>
    <soap:Body>
        <CreateBookingResponse xmlns:hc="http://webservices.micros.com/og/4.3/HotelCommon/" xmlns:c="http://webservices.micros.com/og/4.3/Common/" xmlns:r="http://webservices.micros.com/og/4.3/Reservation/" xmlns="http://webservices.micros.com/ows/5.1/Reservation.wsdl">
            <Result resultStatusFlag="SUCCESS" />
            <HotelReservation SessionAction="BOOKING">
                <r:UniqueIDList>
                    <c:UniqueID type="INTERNAL">M_20210309234113623663PET</c:UniqueID>
                </r:UniqueIDList>
                <r:RoomStays>
                    <hc:RoomStay>
                        <hc:RatePlans>
                            <hc:RatePlan ratePlanCode="9VWBAR" qualifyingIdType="TRAVEL_AGENT" qualifyingIdValue="PETRAVEL" childQualifyingIdValue="PETRAVEL" />
                        </hc:RatePlans>
                        <hc:RoomTypes>
                            <hc:RoomType roomTypeCode="KC" />
                        </hc:RoomTypes>
                        <hc:RoomRates>
                            <hc:RoomRate roomTypeCode="KC" ratePlanCode="9VWBAR">
                                <hc:Rates>
                                    <hc:Rate effectiveDate="2021-03-09">
                                        <hc:Base>1152.9</hc:Base>
                                    </hc:Rate>
                                </hc:Rates>
                            </hc:RoomRate>
                        </hc:RoomRates>
                        <hc:GuestCounts>
                            <hc:GuestCount ageQualifyingCode="ADULT" />
                            <hc:GuestCount ageQualifyingCode="CHILD" />
                        </hc:GuestCounts>
                        <hc:TimeSpan>
                            <hc:StartDate>2021-03-09T00:00:00</hc:StartDate>
                            <hc:EndDate>2021-03-10T00:00:00</hc:EndDate>
                        </hc:TimeSpan>
                        <hc:Guarantee guaranteeType="TAGTD" />
                        <hc:HotelReference chainCode="CCM" hotelCode="VMRMO" />
                        <hc:Total>1152.9</hc:Total>
                        <hc:Comments>
                            <hc:Comment guestViewable="true">
                                <hc:Text>2 adults;</hc:Text>
                            </hc:Comment>
                        </hc:Comments>
                        <hc:ExpectedCharges>
                            <hc:ChargesForPostingDate>
                                <hc:RoomRateAndPackages TotalCharges="0" />
                                <hc:TaxesAndFees TotalCharges="0" />
                            </hc:ChargesForPostingDate>
                        </hc:ExpectedCharges>
                    </hc:RoomStay>
                </r:RoomStays>
                <r:ResGuests>
                    <r:ResGuest resGuestRPH="0">
                        <r:Profiles>
                            <Profile xmlns="http://webservices.micros.com/og/4.3/Name/">
                                <Customer>
                                    <PersonName>
                                        <c:nameTitle>先生</c:nameTitle>
                                        <c:firstName>SHUHAN</c:firstName>
                                        <c:lastName>ZHANG</c:lastName>
                                    </PersonName>
                                    <NativeName languageCode="ZH-S">
                                        <c:lastName>ZHANG SHUHAN</c:lastName>
                                    </NativeName>
                                </Customer>
                            </Profile>
                        </r:Profiles>
                    </r:ResGuest>
                </r:ResGuests>
            </HotelReservation>
        </CreateBookingResponse>
    </soap:Body>
</soap:Envelope>
Copy the code

#2. Write the conversion function

	/ * * *@descConvert the SOAP response message to an array *@param $xmlResp
     * @return mixed
     */
    private function soapXmlParser($xmlResp)
    {
        $xml_parser = xml_parser_create();
        if(! xml_parse($xml_parser.$xmlResp.true)) {
            \Log::error($xmlResp);
            xml_parser_free($xml_parser);// Release the XML parser
            return false;
        }
        // SimpleXML seems to have problems with the colon ":" in the <xxx:yyy> response tags, so take them out
        $xml = preg_replace("/ (< \ /?) (\w+):([^>]*>)/"."The $1$2$3".$xmlResp);
        $xml = simplexml_load_string($xml);
        return json_decode(json_encode($xml), true);
    }

    /** * The version used in the project *@descConvert the SOAP response message to an array *@param $xmlResp
     * @return bool|mixed
     */
    private function soapXmlParser2($xmlResp)
    {
        $xml_parser = xml_parser_create();
        if(! xml_parse($xml_parser.$xmlResp.true)) {
            \Log::error($xmlResp);
            xml_parser_free($xml_parser);// Release the XML parser
            return false;
        }
        $xml = preg_replace('/\sxmlns="(.*?) "/".' _xmlns="${1}"'.$xmlResp);
        $xml = preg_replace('/ < (\ /)? (\w+):(\w+)/'.'< ${1} $${3} {2} _'.$xml);
        $xml = preg_replace('/(\w+):(\w+)="(.*?) "/".'${1} _ ${2} = "${3}"'.$xml);
        return (json_decode(json_encode(simplexml_load_string($xml)), true));
    }
    
Copy the code

#3

{
    "soapHeader": {
        "OGHeader": {
            "@attributes": {
                "transactionID": "000032"."timeStamp": "2021-03-09T00:00:00"
            },
            "Origin": {
                "@attributes": {
                    "entityID": "ORS"."systemType": "ORS"}},"Destination": {
                "@attributes": {
                    "entityID": "PETRAVEL"."systemType": "WEB"}}}},"soapBody": {
        "CreateBookingResponse": {
            "Result": {
                "@attributes": {
                    "resultStatusFlag": "SUCCESS"}},"HotelReservation": {
                "@attributes": {
                    "SessionAction": "BOOKING"
                },
                "rUniqueIDList": {
                    "cUniqueID": "M_20210309234113623663PET"
                },
                "rRoomStays": {
                    "hcRoomStay": {
                        "hcRatePlans": {
                            "hcRatePlan": {
                                "@attributes": {
                                    "ratePlanCode": "9VWBAR"."qualifyingIdType": "TRAVEL_AGENT"."qualifyingIdValue": "PETRAVEL"."childQualifyingIdValue": "PETRAVEL"}}},"hcRoomTypes": {
                            "hcRoomType": {
                                "@attributes": {
                                    "roomTypeCode": "KC"}}},"hcRoomRates": {
                            "hcRoomRate": {
                                "@attributes": {
                                    "roomTypeCode": "KC"."ratePlanCode": "9VWBAR"
                                },
                                "hcRates": {
                                    "hcRate": {
                                        "@attributes": {
                                            "effectiveDate": "2021-03-09"
                                        },
                                        "hcBase": "1152.9"}}}},"hcGuestCounts": {
                            "hcGuestCount": [{"@attributes": {
                                        "ageQualifyingCode": "ADULT"}}, {"@attributes": {
                                        "ageQualifyingCode": "CHILD"}}},"hcTimeSpan": {
                            "hcStartDate": "2021-03-09T00:00:00"."hcEndDate": "2021-03-10T00:00:00"
                        },
                        "hcGuarantee": {
                            "@attributes": {
                                "guaranteeType": "TAGTD"}},"hcHotelReference": {
                            "@attributes": {
                                "chainCode": "CCM"."hotelCode": "VMRMO"}},"hcTotal": "1152.9"."hcComments": {
                            "hcComment": {
                                "@attributes": {
                                    "guestViewable": "true"
                                },
                                "hcText": "2 adults;"}},"hcExpectedCharges": {
                            "hcChargesForPostingDate": {
                                "hcRoomRateAndPackages": {
                                    "@attributes": {
                                        "TotalCharges": "0"}},"hcTaxesAndFees": {
                                    "@attributes": {
                                        "TotalCharges": "0"}}}}}},"rResGuests": {
                    "rResGuest": {
                        "@attributes": {
                            "resGuestRPH": "0"
                        },
                        "rProfiles": {
                            "Profile": {
                                "Customer": {
                                    "PersonName": {
                                        "cnameTitle": "Mr."."cfirstName": "SHUHAN"."clastName": "ZHANG"
                                    },
                                    "NativeName": {
                                        "@attributes": {
                                            "languageCode": "ZH-S"
                                        },
                                        "clastName": "ZHANG SHUHAN"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
Copy the code