php生成&解析xml

mac2025-10-21  5

生成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)