예제 #1
0
 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;
 }
예제 #2
0
 /**
  * @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;
 }