note 27362 added to function.domdocument-get-element-by-id

From: Date: Tue, 03 Dec 2002 13:51:06 +0000
Subject: note 27362 added to function.domdocument-get-element-by-id
Groups: php.notes 
Request: Send a blank email to php-notes+get-40296@lists.php.net to get a copy of this message
This class is useful for people who haven't the latest release of PHP and would like to search an element with a known ID through a collection of nodes. Example to use it : $domDoc = xmldoc("<root><entity id='e1'></entity><entity id='e2'><titi id='e5'></titi></entity></root>"); $root = $domDoc->root(); $children = $root->child_nodes(); $researchObject = new searchElementById("e5", $children); $resultElement = $researchObject->beginSearching(); The source of the class : class searchElementById { //Class which can find and return an XML node with a specified ID var $numberElements=0; var $numberAttributes=0; var $idToFind; var $tabElements; //Initialization function which accept 2 parameters : //$paramIdToFind : value of the ID to find //$paramTabElements : array of nodes which contains the element to find function searchElementById($paramIdToFind, $paramTabElements) { //Initialization of class variables $this->idToFind = $paramIdToFind; $this->tabElements = $paramTabElements; } //Function starting the research function beginSearching() { //Search and return the element found return $this->searchID($this->tabElements); } //Recursive function searching the desired node function searchID($tabElements) { //Variable of the number of elements $i = 0; //Variable of the number of attributes $j = 0; //Number of nodes in the elements' array $nbreNoeuds = count($tabElements); //Loop on all elements for ($i=0;$i<$nbreNoeuds;$i++) { //Incrementation of the class variable couting the total number of elements $this->compteurElements++; //Extraction of the attributes of the current element $tabAttributs = $tabElements[$i]->attributes(); //Number of attributes in the current element $nbreAttributs = count($tabAttributs); //Loop on all attributes for ($j=0;$j<$nbreAttributs;$j++) { //Incrementation of the class variable couting the total number of attributes $this->numberAttributes++; //Test if the current attribute is the attribute to find if ($tabAttributs[$j]->value==$this->idToFind) { //If yes, return the current element return $tabElements[$i]; } } //Search children nodes of the current element $children = $tabElements[$i]->child_nodes(); if (!is_bool($children)) { //If the current element has children, call recursively this function $result = $this->searchID($children); //If the result is not boolean, return the array if (!is_bool($result)) { return $result; } } } return false; } } -- http://www.php.net/manual/en/function.domdocument-get-element-by-id.php http://master.php.net/manage/user-notes.php?action=edit+27362 http://master.php.net/manage/user-notes.php?action=delete+27362 http://master.php.net/manage/user-notes.php?action=reject+27362

« previous php.notes (#40296) next »