public function parseDeliveryAddress($xml, $charset) { $doc = NULL; $xmlUtil = new XmlParseUtil(); try { $doc = $xmlUtil->parseDoc($xml, $charset); } catch (Exception $e) { throw new SDKRuntimeException('解析xml失败:' . $xml . ',' . $e); } $deliveryAddressInfo = NULL; $addresss = array(); $root = $doc->documentElement; foreach ($root->childNodes as $node) { if ($node->nodeName == 'addressInfos') { foreach ($node->childNodes as $child) { if ($child->nodeName == 'item') { $node = $child; $deliveryAddressInfo = new DeliveryAddressInfo(); foreach ($node->childNodes as $child) { $value = iconv('UTF-8', $charset, $child->nodeValue); $this->setAddressInfoAttr($deliveryAddressInfo, $child->nodeName, $value); } array_push($addresss, $deliveryAddressInfo); } } } } $this->setDeliveryAddresss($addresss); }
/** * 将xml解析为地址列表 * * @param xml 需要解析的XML * @param charset XML的字符集 */ function parseDeliveryAddress($xml, $charset) { $doc = null; $xmlUtil = new XmlParseUtil(); try { $doc = $xmlUtil->parseDoc($xml, $charset); } catch (Exception $e) { throw new SDKRuntimeException("解析xml失败:" . $xml . "," . $e); } $deliveryAddressInfo = null; $addresss = array(); // 提取地址列表 $root = $doc->documentElement; foreach ($root->childNodes as $node) { if ($node->nodeName == "addressInfos") { foreach ($node->childNodes as $child) { if ($child->nodeName == "item") { $node = $child; $deliveryAddressInfo = new DeliveryAddressInfo(); foreach ($node->childNodes as $child) { $value = iconv("UTF-8", $charset, $child->nodeValue); //注意要转码对于中文,因为XML默认为UTF-8格式 $this->setAddressInfoAttr($deliveryAddressInfo, $child->nodeName, $value); } array_push($addresss, $deliveryAddressInfo); } } } } $this->setDeliveryAddresss($addresss); }