php生成&解析xml

生成xml:
	public function crossBeltSorterDownloadOrderAction() {
        header("Content-type:text/xml");
        $xml ='<?xml version="1.0" encoding="UTF-8"?>';
        $xml .='<result>';
        if ($this->_request->isPost()) {
            $userId = $this->_request->getParam('user_id');
            $token = $this->_request->getParam('token');
            $startTime = $this->_request->getParam('start_time');
            $endTime = $this->_request->getParam('end_time');
        } else {
            $xml .= '<msg>错误的请求方式!</msg>';
            $xml .= '</result>';
            die($xml);
        }
        // 验证
        $validate = Warehouse_Service_RegionShipType::validate($userId, $token);
        if (!$validate) {
            $xml .= '<msg>user/token验证信息错误!</msg>';
            $xml .= '</result>';
            die($xml);
        }
        // 获取订单数据
        $resultset = Warehouse_Service_RegionShipType::getOrderData($validate, $startTime, $endTime);
        if ($resultset['ask'] == 0) {
            $xml .= "<msg>{$resultset['msg']}</msg>";
        } else {
            $xml .= '<msg>获取成功</msg>';
            foreach ($resultset['data'] as $value) {
                $xml .= <<<EOD
                    <bill>
                        <ordercode>{$value['order_code']}</ordercode>
                        <country>{$value['country_name']}</country>
                        <weight>{$value['awi_weight']}</weight>
                        <ship_type_code>{$value['shipping_method']}</ship_type_code>
                        <sub_ship_type>{$value['sub_shipping_method']}</sub_ship_type>
                        <track>{$value['tracking_number']}</track>
                        <last_update_time>{$value['awi_create_time']}</last_update_time>
                        <area>{$value['sort_area']}</area>
                    </bill>
EOD;
            }
        }
        $xml .= '</result>';
        die($xml);
    }

结果:
<?xml version="1.0" encoding="UTF-8"?>
<result>
    <msg>获取成功</msg>
    <bill>
        <ordercode>WA00911910240002</ordercode>
        <country>阿富汗</country>
        <weight>0.0190</weight>
        <ship_type_code>HKBRAM</ship_type_code>
        <sub_ship_type>HKBRAM</sub_ship_type>
        <track>RT308772689HK</track>
        <last_update_time>2019-10-24 23:50:47</last_update_time>
        <area>AU</area>
    </bill>
    <bill>
        <ordercode>WA00911901240002</ordercode>
        <country>阿富汗</country>
        <weight>0.0880</weight>
        <ship_type_code>HKBRAM</ship_type_code>
        <sub_ship_type>HKBRAM</sub_ship_type>
        <track>RT308772715HK</track>
        <last_update_time>2019-10-25 22:38:05</last_update_time>
        <area>AU</area>
    </bill>
    <bill>
        <ordercode>WA00911910160003</ordercode>
        <country>阿富汗</country>
        <weight>0.0110</weight>
        <ship_type_code>HKBRAM</ship_type_code>
        <sub_ship_type>HKBRAM</sub_ship_type>
        <track>RT308772658HK</track>
        <last_update_time>2019-10-25 03:12:17</last_update_time>
        <area>AU</area>
    </bill>
    <bill>
        <ordercode>WA00911909050001</ordercode>
        <country>阿富汗</country>
        <weight>0.0110</weight>
        <ship_type_code>HKBRAM</ship_type_code>
        <sub_ship_type>HKBRAM</sub_ship_type>
        <track>RT308772692HK</track>
        <last_update_time>2019-10-25 22:15:13</last_update_time>
        <area>AU</area>
    </bill>
    <bill>
        <ordercode>WA00911901240001</ordercode>
        <country>阿富汗</country>
        <weight>0.0120</weight>
        <ship_type_code>HKBRAM</ship_type_code>
        <sub_ship_type>HKBRAM</sub_ship_type>
        <track>RT308772701HK</track>
        <last_update_time>2019-10-25 22:27:29</last_update_time>
        <area>AU</area>
    </bill>
</result>


接口参数:
data => <packbill>
		    <country>美国</country>;
			<weight>0.01</weight>;
			<number>2</number>;
			<area_number>1</area_number>;
			<barcode>201910250001</barcode>;
			<Exit>1</Exit>
			<orders>;
				<order_code>WA00911910240002</order_code>;
				<order_code>WA00911910240003</order_code>;
			</orders>;
		</packbill>
		
解析xml:
	public function crossBeltSorterBaggingAction() {
        header("Content-type:text/xml");
        $xml ='<?xml version="1.0" encoding="UTF-8"?>';
        $xml .='<result>';
        if ($this->_request->isPost()) {
            $userId = $this->_request->getParam('user_id');
            $token = $this->_request->getParam('token');
            $xmlObj = simplexml_load_string($this->_request->getParam('data'));
        } else {
            $xml .= '<msg>错误的请求方式!</msg>';
            $xml .= '</result>';
            die($xml);
        }
        // 验证
        $validate = Warehouse_Service_RegionShipType::validate($userId, $token);
        if (!$validate) {
            $xml .= '<msg>user/token验证信息错误!</msg>';
            $xml .= '</result>';
            die($xml);
        }

        $countryName = (string) $xmlObj->country;
        $totalWeight = (string) $xmlObj->weight;
        $orderQuantity = (integer) $xmlObj->number;
        $portType = (string) $xmlObj->Exit;
        $opackageCode = (string) $xmlObj->barcode;
        $orderArr = (array) $xmlObj->orders;

        // 创建装袋详情
        $resultset = Warehouse_Service_RegionShipType::createBaggingDetail($validate, $countryName, $totalWeight, $orderQuantity, $portType, $opackageCode, $orderArr);
        if ($resultset['ask'] == 0) {
            $xml .= "<msg>{$resultset['msg']}</msg>";
        } else {
            $xml .= '<msg>OK</msg>';
            $xml .= "<bgurl>{$_SERVER['HTTP_HOST']}/default/index/print-packaging-label?opackage_code={$opackageCode}</bgurl>";
            if (is_array($resultset['msg'])) {
                $error = implode(',', $resultset['msg']);
                $xml .= "<results><msg>{$error}</msg></results>";
            }
        }
        $xml .= '</response>';
        die($xml);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值