note 48111 modified in ref.dom by didou

From: Date: Sat, 02 Apr 2005 20:47:25 +0000
Subject: note 48111 modified in ref.dom by didou
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-87366@lists.php.net to get a copy of this message
Here's a function to transform a DOMNode in an array. greetings, TIMO <? function dom_to_simple_array($domnode, &$array) { $array_ptr = &$array; $domnode = $domnode->firstChild; while (!is_null($domnode)) { if (! (trim($domnode->nodeValue) == "") ) { switch ($domnode->nodeType) { case XML_TEXT_NODE: { $array_ptr['cdata'] = $domnode->nodeValue; break; } case XML_ELEMENT_NODE: { $array_ptr = &$array[$domnode->nodeName][]; if ($domnode->hasAttributes() ) { foreach ($domnode->attributes as $d_attribute){ $array_ptr[$d_attribute->name] = $d_attribute->value; } } break; } } if ( $domnode->hasChildNodes() ) { dom_to_simple_array($domnode, $array_ptr); } } $domnode = $domnode->nextSibling; } } ?> --was-- Unfortunately jas at uci dot edu 's function doesn'T really work ;-) try this corrected version. It works even with complicated HTML.. greetings, TIMO <? function dom_to_simple_array($domnode, &$array) { $array_ptr = &$array; $domnode = $domnode->firstChild; while (!is_null($domnode)) { if (! (trim($domnode->nodeValue) == "") ) { switch ($domnode->nodeType) { case XML_TEXT_NODE: { $array_ptr['cdata'] = $domnode->nodeValue; break; } case XML_ELEMENT_NODE: { $array_ptr = &$array[$domnode->nodeName][]; if ($domnode->hasAttributes() ) { foreach ($domnode->attributes as $d_attribute){ $array_ptr[$d_attribute->name] = $d_attribute->value; } } break; } } if ( $domnode->hasChildNodes() ) { dom_to_simple_array($domnode, $array_ptr); } } $domnode = $domnode->nextSibling; } } ?> http://php.net/manual/en/ref.dom.php

« previous php.notes (#87366) next »