downloads | documentation | faq | getting help | mailing lists | licenses | wiki | 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, 13 Nov 2009

view this page in

DomDocument->get_element_by_id

(PHP 4 >= 4.1.0)

DomDocument->get_element_by_id 特定の ID を持つ要素を検索する

説明

domelement DomDocument->get_element_by_id ( string $id )

この関数は domdocument_get_elements_by_tagname() と似ていますが、与えられた ID を持つ要素を検索します。 DOM 標準によれば、これには属性 ID を ID 型として定義する DTD が必要になりますが、現在の実装は単純に "//*[@ID = '%s']" に対する xpath 検索を行っています。これは属性が ID 型でない場合に NULL を返す必要がある DOM 標準に準拠していません。 この動作は固定されているようですので、現在の動作を当てにしないでください。

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 03: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