Delicious Bookmark this on Delicious Share on Facebook SlashdotSlashdot It! Digg! Digg



PHP : Function Reference : DOM XML Functions : DomDocument->get_element_by_id

DomDocument->get_element_by_id

Searches for an element with a certain id ()
domelement DomDocument->get_element_by_id ( string id )

This function is similar to domdocument_get_elements_by_tagname() but searches for an element with a given id. According to the DOM standard this requires a DTD which defines the attribute ID to be of type ID, though the current implementation simply does an xpath search for "//*[@ID = '%s']". This does not comply to the DOM standard which requires to return null if it is not known which attribute is of type id. This behaviour is likely to be fixed, so do not rely on the current behaviour.

See also domdocument_get_elements_by_tagname()

Related Examples ( Source code ) » domdocument get element by id
















Code Examples / Notes » domdocument get element by id

etienne dot anken

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;

 }

}


Change Language


Follow Navioo On Twitter
DomAttribute->name
DomAttribute->set_value
DomAttribute->specified
DomAttribute->value
DomDocument->add_root
DomDocument->create_attribute
DomDocument->create_cdata_section
DomDocument->create_comment
DomDocument->create_element_ns
DomDocument->create_element
DomDocument->create_entity_reference
DomDocument->create_processing_instruction
DomDocument->create_text_node
DomDocument->doctype
DomDocument->document_element
DomDocument->dump_file
DomDocument->dump_mem
DomDocument->get_element_by_id
DomDocument->get_elements_by_tagname
DomDocument->html_dump_mem
DomDocument->xinclude
DomDocumentType->entities()
DomDocumentType->internal_subset()
DomDocumentType->name()
DomDocumentType->notations()
DomDocumentType->public_id()
DomDocumentType->system_id()
DomElement->get_attribute_node()
DomElement->get_attribute()
DomElement->get_elements_by_tagname()
DomElement->has_attribute()
DomElement->remove_attribute()
DomElement->set_attribute_node()
DomElement->set_attribute()
DomElement->tagname()
DomNode->add_namespace
DomNode->append_child
DomNode->append_sibling
DomNode->attributes
DomNode->child_nodes
DomNode->clone_node
DomNode->dump_node
DomNode->first_child
DomNode->get_content
DomNode->has_attributes
DomNode->has_child_nodes
DomNode->insert_before
DomNode->is_blank_node
DomNode->last_child
DomNode->next_sibling
DomNode->node_name
DomNode->node_type
DomNode->node_value
DomNode->owner_document
DomNode->parent_node
DomNode->prefix
DomNode->previous_sibling
DomNode->remove_child
DomNode->replace_child
DomNode->replace_node
DomNode->set_content
DomNode->set_name
DomNode->set_namespace
DomNode->unlink_node
DomProcessingInstruction->data
DomProcessingInstruction->target
DomXsltStylesheet->process()
DomXsltStylesheet->result_dump_file()
DomXsltStylesheet->result_dump_mem()
domxml_new_doc
domxml_open_file
domxml_open_mem
domxml_version
domxml_xmltree
domxml_xslt_stylesheet_doc
domxml_xslt_stylesheet_file
domxml_xslt_stylesheet
domxml_xslt_version
xpath_eval_expression
xpath_eval
xpath_new_context
xpath_register_ns_auto
xpath_register_ns
xptr_eval
xptr_new_context
eXTReMe Tracker