open($rss_file); while ($reader->read()) { // If you're at an element named 'item' if ($reader->nodeType == XMLREADER::ELEMENT && $reader->localName == 'item') { // Reset array $vegguide = array(); // Keep on moving while ($reader->read()) { // You've reached the end of item, fallback to previous while() if ($reader->nodeType == XMLREADER::END_ELEMENT && $reader->localName == 'item') { break; } // Get the elements we care about if ($reader->nodeType == XMLREADER::ELEMENT && in_array($reader->localName, $elements)) { $tmp = $reader->localName; $reader->read(); $vegguide[$tmp] = $reader->value; } } // Do something with this item if (count($vegguide)) do_something_with_item($vegguide); } } ?>