libxml2 contains much more useful method readString() that will read and return whole text content of element. You can call it after receiving start tag (XMLReader::ELEMENT). You can use this PHP code to emulate this method until PHP will directly call underlying libxml2 implementation.
<?php
class XMLReader2 extends XMLReader
{
function readString()
{
$depth = 1;
$text = "";
while ($this->read() && $depth != 0)
{
if (in_array($this->nodeType, array(XMLReader::TEXT, XMLReader::CDATA, XMLReader::WHITESPACE, XMLReader::SIGNIFICANT_WHITESPACE)))
$text .= $this->value;
if ($this->nodeType == XMLReader::ELEMENT) $depth++;
if ($this->nodeType == XMLReader::END_ELEMENT) $depth--;
}
return $text;
}
}
?>
Just use XMLReader2 instead of XMLReader.
XMLReader::read
(PHP 5 >= 5.1.2)
XMLReader::read — Move to next node in document
Descrizione
bool XMLReader::read
( void
)
Moves cursor to the next node in the document.
Valori restituiti
Restituisce TRUE in caso di successo, FALSE in caso di fallimento.
XMLReader::read
jirka at kosek dot cz
08-Feb-2006 10:01
08-Feb-2006 10:01
