PHP function for reading DOM XML into an array


$xml = read($dom);

  function read($node) {
    $array = array();
    if ($node->firstChild !== null) {
      $current = $node->firstChild;
    } else {
      return;
    }

    while (true) {
      switch ($current->nodeType) {
        case 1: // XML_ELEMENT_NODE
          $array[$current->nodeName][] = $this->read($current);
          break;
        case 3: // XML_TEXT_NODE
        case 4: // XML_CDATA_SECTION_NODE
          if (strlen(trim($current->nodeValue)) > 0) {
            return $current->nodeValue;
          }
          break;
        default:
          echo $current->nodeType;
          break;
      }

      if ($current->nextSibling !== null) {
        $current = $current->nextSibling;
      } else {
        return $array;
      }
    }

    return $array;
  }

Tags: , ,

Leave a Reply