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

search for in the

DomElement::has_attribute> <DomElement::get_attribute
[edit] Last updated: Fri, 18 May 2012

view this page in

DomElement::get_elements_by_tagname

(PHP 4 >= 4.1.0)

DomElement::get_elements_by_tagname Gets elements by tagname

Description

array DomElement::get_elements_by_tagname ( string $name )

Gets all the sub elements with the specific name within the current element.

Parameters

name

The name of the seeked element.

Return Values

Returns an array of DomElement objects.

Examples

Example #1 Getting a content

<?php
if (!$dom domxml_open_mem($xmlstr)) {
  echo 
"Error while parsing the document\n";
  exit;
}

$root $dom->document_element();

$node_array $root->get_elements_by_tagname('element');

foreach (
$node_array as $node) {
    echo 
' - ' $node->get_content() . "\n";
}

?>

Migrating to PHP 5

Use DOMElement::getElementsByTagName.



DomElement::has_attribute> <DomElement::get_attribute
[edit] Last updated: Fri, 18 May 2012
 
add a note add a note User Contributed Notes DomElement::get_elements_by_tagname
mikhail dot nemtsev at gmail dot com 24-Aug-2008 05:21
This example uses get_elements_by_tagname() and child_nodes() to output the contents of the xml file. The sample xml file and php code are below.

<?xml version="1.0" encoding="iso-8859-1"?>
<dictionary>
 <entry>
    <word>Hello</word>
    <meaning>used to express a greeting</meaning>
    <example>Hello World!</example>
 </entry>
</dictionary>

<?php
$xml_path
= "/some/dir/dictionary.xml";
    if (!
$dom = domxml_open_file($xml_path)) {
       
//the above requires absolube path
       
exit("Could not access the XML source.");
    }
   
$root = $dom->document_element(); //obtain the root
   
$array_entry = $root->get_elements_by_tagname("entry"); //gets all <entry> DomElems
   
foreach ($array_entry as $entry_dom_elem) {   
       
$childnodes = $entry_dom_elem->child_nodes();
        foreach (
$childnodes as $child) { //cycle thru <word>, <meaning>, <example>
           
echo "node name: ".$child->tagname() . "; contains: " . $child->get_content()."<br>";
           
        }
    }
?>
The above code outputs:
node name: word; contains: Hello
node name: meaning; contains: used to express a greeting
node name: example; contains: Hello World!
php dot net dot 3 dot jdoe at spamgourmet dot com 30-Mar-2004 07:55
Function get_elements_by_tagname() is only defined for the DocumentRoot-Element rather than for any DocumentElement.
chregu at php dot net 30-Oct-2002 04:02
if you want to search for tagnames with namespaces, do it the following way:
(it's a work around, not a really proper solution..)

$dom = domxml_open_mem($xmlval);
$ctx=xpath_new_context($dom);
$ctx->xpath_register_ns("yns","http://your.name.space/uri");
$nodes = $dom->get_elements_by_tagname("yns:tagname",$ctx);

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