note 59696 added to ref.domxml

From: Date: Tue, 13 Dec 2005 19:04:35 +0000
Subject: note 59696 added to ref.domxml
Groups: php.notes 
Request: Send a blank email to php-notes+get-100082@lists.php.net to get a copy of this message
Re: websiterepairguys... Close but no cigar ;-) As written it will not work if the repeated tags are somewhere other than the first node, i.e. the following will not work: <nodes> <node>onething</node> <node>something</node> <node>something</node> </nodes> You must store the new node name when you get a new sibling that doesn't match the previous and then it will work OK. Amended code: function dom_to_array($domnode, &$array) { $parent=$domnode; $domnode = $domnode->firstChild; $myname=$domnode->nodeName; $x=1; while (!is_null($domnode)) { switch ($domnode->nodeType) { case XML_ELEMENT_NODE: { if ( !$domnode->hasChildNodes()) { $array[$domnode->nodeName]=''; } else if ( $domnode->hasChildNodes() && $domnode->firstChild->nodeType==XML_TEXT_NODE) { $array[$domnode->nodeName]=$domnode->firstChild->nodeValue; } else if ( $domnode->hasChildNodes() ) { $array_ptr = & $array[$domnode->nodeName]; dom_to_array($domnode, $array_ptr); } break; } } $domnode = $domnode->nextSibling; if($domnode->nodeName == $myname) { $domnode->nodeName.=($x++); } else { $myname = $domnode->nodeName; } } } ---- Manual Page -- http://www.php.net/manual/en/ref.domxml.php Edit -- http://master.php.net/manage/user-notes.php?action=edit+59696 Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=added+to+the+manual Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=bad+code Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=spam Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=useless Delete: non-english -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=non-english Delete: already in docs -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes&reason=already+in+docs Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+59696&report=yes Reject -- http://master.php.net/manage/user-notes.php?action=reject+59696&report=yes Search -- http://master.php.net/manage/user-notes.php

« previous php.notes (#100082) next »