private function deserialize($xml) { $response_array = array(); $iter = new SimpleXmlIterator((string) $xml, null); $response_array[Tools::strtolower($iter->getName())] = $this->recursiveDeserialize($iter); return $response_array; }
/** * @param \SimpleXmlIterator $sxi * @param null $key * @param null $tmp * * @return null * @author Panagiotis Vagenas <*****@*****.**> * @since TODO Enter Product ${VERSION} */ protected function sxiToXpath($sxi, $key = null, &$tmp = null) { $keys_arr = array(); //get the keys count array for ($sxi->rewind(); $sxi->valid(); $sxi->next()) { $sk = $sxi->key(); if (array_key_exists($sk, $keys_arr)) { $keys_arr[$sk] += 1; // $keys_arr[ $sk ] = $keys_arr[ $sk ]; } else { $keys_arr[$sk] = 1; } } //create the xpath for ($sxi->rewind(); $sxi->valid(); $sxi->next()) { $sk = $sxi->key(); if (!isset(${$sk})) { ${$sk} = 1; } if ($keys_arr[$sk] >= 1) { $spk = $sk . '[' . ${$sk} . ']'; $keys_arr[$sk] = $keys_arr[$sk] - 1; ${$sk}++; } else { $spk = $sk; } $kp = $key ? $key . '/' . $spk : '/' . $sxi->getName() . '/' . $spk; if ($sxi->hasChildren()) { $this->sxiToXpath($sxi->getChildren(), $kp, $tmp); } else { $tmp[$kp] = strval($sxi->current()); } $at = $sxi->current()->attributes(); if ($at) { $tmp_kp = $kp; foreach ($at as $k => $v) { $kp .= '/@' . $k; $tmp[$kp] = $v; $kp = $tmp_kp; } } } return $tmp; }