示例#1
0
 /**
  * 
  * @param DOMNodeList $elements
  * @return multitype:multitype:NULL
  */
 protected function xmlToArray($elements)
 {
     if ($elements instanceof DOMNodeList) {
         if ($elements->length == 1) {
             return $this->xmlToArray($elements->item(0));
         } else {
             $result = array();
             foreach ($elements as $element) {
                 $result[] = $this->xmlToArray($element);
             }
             return $result;
         }
     } elseif ($elements instanceof DOMNode) {
         if ($elements->hasChildNodes()) {
             $result = array();
             foreach ($elements->childNodes as $element) {
                 if ($element->nodeType != 3) {
                     if (isset($result[$element->nodeName])) {
                         if (is_array($result[$element->nodeName]) && !self::isAssociative($result[$element->nodeName])) {
                             $result[$element->nodeName][] = $this->xmlToArray($element);
                         } else {
                             $v = $result[$element->nodeName];
                             $result[$element->nodeName] = array();
                             $result[$element->nodeName][] = $v;
                             $result[$element->nodeName][] = $this->xmlToArray($element);
                         }
                     } else {
                         $result[$element->nodeName] = $this->xmlToArray($element);
                     }
                 }
             }
             if (count($result) == 0) {
                 return $elements->nodeValue;
             } else {
                 return $result;
             }
         } else {
             return $elements->nodeValue;
         }
     }
 }