PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

DomDocument->get_elements_by_tagname> <DomDocument->dump_mem
Last updated: Fri, 18 Jul 2008

view this page in

DomDocument->get_element_by_id

(No version information available, might be only in CVS)

DomDocument->get_element_by_id — Ricerca di un elemento per id

Descrizione

domelement DomDocument->get_element_by_id ( string $id )

Questa funzione è simile a domdocument_get_elements_by_tagname() ma ricerca un elemento per un dato id. In accordo con lo standard DOM, è richiesto un DTD che definisca l'attributo ID essere di tipo ID, sebbene l'implementazione corrente ricerchi semplicemente il testo "//*[@ID = '%s']". Ciò non è aderente allo standard DOM che richiede di restituire null se non è noto quale sia l'attributo di tipo id. Questo comportamento sta per essere corretto, pertanto non basarsi sull'implementazione odierna.

Vedere anche domdocument_get_elements_by_tagname()



add a note add a note User Contributed Notes
DomDocument->get_element_by_id
etienne dot anken at eivd dot ch
03-Dec-2002 07:51
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;
   
  }
       
}

 
show source | credits | stats | sitemap | contact | advertising | mirror sites