Compdigitec Labs

« | Home | »

DOMNodeList as an Array

By admin | August 31, 2008

When using getElementsByTagName, it returns a DOMNodeList which you can use with foreach, but you can’t use array indexes to access elements.

For example, you can use the following code to the contents of the first “test” tag:

<?php
$file
= 'z.xml';
$xmlfile = new DOMDocument();
@
$xmlfile->load($file);
$iplist = $xmlfile->getElementsByTagName('test');
$i = 0;
foreach(
$iplist as $v) {
if(
$i == 0) {
var_dump($v->nodeValue);
}
$i++;
}
?>

Use this as z.xml:
<?xml version="1.0" ?><test>Testing: hello, world</test>

So as you can see, the $iplist variable is acting like an array (via foreach behaviour). But try this code:

<?php
$file
= 'z.xml';
$xmlfile = new DOMDocument();
@
$xmlfile->load($file);
$iplist = $xmlfile->getElementsByTagName('test');
var_dump($iplist[0]->nodeValue);
?>

The error “Fatal error: Cannot use object of type DOMNodeList as array in /usr/dev/php5/error.php on line 6” should occur. To fix this, use $iplist->item(0) instead of $iplist[0], though you can still use DOMNodeList with foreach. The following code should work:

<?php
$file
= 'z.xml';
$xmlfile = new DOMDocument();
@
$xmlfile->load($file);
$iplist = $xmlfile->getElementsByTagName('test');
var_dump($iplist->item(0)->nodeValue);
?>

If you found this article helpful or useful, please help Compdigitec by spreading the word or by leaving a comment. Don’t forget to subscribe to Compdigitec Labs for more interesting articles!

If you found this article helpful or interesting, please help Compdigitec spread the word. Don’t forget to subscribe to Compdigitec Labs for more useful and interesting articles!

Topics: PHP | 9 Comments »

9 Responses to “DOMNodeList as an Array”

  1. alboNicca Says:
    April 1st, 2012 at 20:10

    Thank u. That’s what I needed

  2. anon Says:
    August 10th, 2012 at 17:13

    Thank you very much.

  3. 123bet Says:
    August 1st, 2025 at 05:39

    … [Trackback]

    […] Info on that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  4. Mulch film Says:
    August 2nd, 2025 at 00:07

    … [Trackback]

    […] Find More to that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  5. วิเคราะห์ บอลชุด Says:
    August 6th, 2025 at 18:56

    … [Trackback]

    […] Find More on that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  6. Ethical Elephant Sanctuary Says:
    August 15th, 2025 at 21:32

    … [Trackback]

    […] Read More Info here to that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  7. โบลเวอร์ kruger Says:
    August 15th, 2025 at 22:26

    … [Trackback]

    […] Find More Information here on that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  8. ถมที่ดินสมุทรสงคราม Says:
    August 20th, 2025 at 01:39

    … [Trackback]

    […] Read More to that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

  9. ออกแบบตกแต่งภายในบ้านหรู Says:
    September 10th, 2025 at 20:02

    … [Trackback]

    […] Read More Information here to that Topic: compdigitec.com/labs/2008/08/31/domnodelist-as-an-array/ […]

Comments