php 多维数组转xml的方法

public function arrToxml($arr,$dom = 0,$item=0){

        if(!$dom) $dom = new DOMDocument("1.0",'utf-8');
        $dom -> formatOutput = true;//格式xml输出 有换行什么的
        if(!$item){
            $item = $dom->createElement("AvailabilityRequest");
            $dom->appendChild($item);
            $item->setAttribute('session_id',session_id());//设置属性
        }

        foreach ($arr as $key=>$val){
            if (is_array($val)){

                $itemx = $dom->createElement($key);
                $item->appendChild($itemx);
                if(in_array($key,['Contact','Adult','Children'])){
                    if($key == 'Contact'){
                        foreach ($val as $k=>$v){
                            $itemx->setAttribute($k,$v);
                        }
                    }else{
                        $item->removeChild($itemx);
                        foreach ($val as $k=>$v){
                            $itemx = $dom->createElement($key);
                            $item->appendChild($itemx);
                            foreach ($v as $kk => $vv) {
                                $itemx->setAttribute($kk,$vv);
                            }
                        }
                    } 
                }else {
                    $this->arrToxml($val, $dom, $itemx);
                }


            }else {
                 $itemx = $dom->createElement($key,$val);
                 $item->appendChild($itemx);
            }
        }
        return $dom->saveXML();
    }

   $xmlArray = [
            'Authentication' => [
                'OrgID' => $orgId,
                'UserName' => $userName,
                'AuthKey' => $authKey,
                'Version' => $version
            ],
            'HotelRequest' => [
             'ReqType' => 'booking',
             'CityID' => '3',
             'CheckInDate' => '2016-03-10',
             'CheckOutDate' => '2016-03-11',
             'HotelID' => '2237',
             'RateCode' => 'CZWUyZTU1ZTljZDViMzc4ODdmZTZhNjZ',
             'RoomCount' => '1',
             'Nationality' => 'CN',
             'Adult' => '2',
             'Children' => '0',
             'ChildrenAge' => '22',
             'Currency' => 'CNY',
             'TotalAmount' => '963.36',
             'ConfirmType' => '1',
             'Contact' => [
                 'name' => 'ZHANG SAN',
                 'phone' => '13111111111',
                 'email' => 'email@yahoo.cn',
                 'telephone' => '010-12341332'
             ],
             'Rooms' => [
                 'Room' => [
                     'Adult' =>[ 
                         [
                             'last' => 'ZHANG',
                             'first' => 'XIAOHONG'
                         ],
                         [
                             'last' => 'LI',
                             'first' => 'XIAOMING'
                         ],
                     ],
                     'Children' =>[ 
                         [
                             'last' => 'L3',
                             'first' => 'XIAOLIE'
                         ]
                     ]
                 ]
             ],
             'GuestRemarks' => '<!*CDATA*apply for two bed rooms++>',
             'PartnerBookingID' => 'SN1234567890'
        ]

        ];
        $xmlData = $this->arrToxml($xmlArray);
        echo $xmlData;
        <?xml version="1.0" encoding="utf-8"?>
<AvailabilityRequest session_id="9hl6m3msroqhlv26jv9qkkple1">
    <Authentication>
        <OrgID>111</OrgID>
        <UserName>222</UserName>
        <AuthKey>333</AuthKey>
        <Version>1.0</Version>
    </Authentication>
    <HotelRequest>
        <ReqType>booking</ReqType>
        <CityID>3</CityID>
        <CheckInDate>2016-03-10</CheckInDate>
        <CheckOutDate>2016-03-11</CheckOutDate>
        <HotelID>2237</HotelID>
        <RateCode>CZWUyZTU1ZTljZDViMzc4ODdmZTZhNjZ</RateCode>
        <RoomCount>1</RoomCount>
        <Nationality>CN</Nationality>
        <Adult>2</Adult>
        <Children>0</Children>
        <ChildrenAge>22</ChildrenAge>
        <Currency>CNY</Currency>
        <TotalAmount>963.36</TotalAmount>
        <ConfirmType>1</ConfirmType>
        <Contact name="ZHANG SAN" phone="13111111111" email="email@yahoo.cn" telephone="010-12341332"/>
        <Rooms>
            <Room>
                <Adult last="ZHANG" first="XIAOHONG"/>
                <Adult last="LI" first="XIAOMING"/>
                <Children last="L3" first="XIAOLIE"/>
            </Room>
        </Rooms>
        <GuestRemarks>&lt;!*CDATA*apply for two bed rooms++&gt;</GuestRemarks>
        <PartnerBookingID>SN1234567890</PartnerBookingID>
    </HotelRequest>
</AvailabilityRequest>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值