Wrapper XMLReader class, for simple SAX-reading huge xml:https://github.com/dkrnl/SimpleXMLReaderUsage example: http://github.com/dkrnl/SimpleXMLReader/blob/master/examples/example1.php<?phpclass SimpleXMLReader extends XMLReader{    protected $callback = array();    public function registerCallback($name, $callback, $nodeType = XMLREADER::ELEMENT)    {        if (isset($this->callback[$nodeType][$name])) {            throw new Exception("Already exists callback $name($nodeType).");        }        if (!is_callable($callback)) {            throw new Exception("Already exists parser callback $name($nodeType).");        }        $this->callback[$nodeType][$name] = $callback;        return $this;    }    public function unRegisterCallback($name, $nodeType = XMLREADER::ELEMENT)    {        if (!isset($this->callback[$nodeType][$name])) {            throw new Exception("Unknow parser callback $name($nodeType).");        }        unset($this->callback[$nodeType][$name]);        return $this;    }    public function parse()    {        if (empty($this->callback)) {            throw new Exception("Empty parser callback.");        }        $continue = true;        while ($continue && $this->read()) {            if (isset($this->callback[$this->nodeType][$this->name])) {                $continue = call_user_func($this->callback[$this->nodeType][$this->name], $this);            }        }    }    public function expandXpath($path, $version = "1.0", $encoding = "UTF-8")    {        return $this->expandSimpleXml($version, $encoding)->xpath($path);    }    public function expandString($version = "1.0", $encoding = "UTF-8")    {        return $this->expandSimpleXml($version, $encoding)->asXML();    }    public function expandSimpleXml($version = "1.0", $encoding = "UTF-8", $className = null)    {        $element = $this->expand();        $document = new DomDocument($version, $encoding);        $node = $document->importNode($element, true);        $document->appendChild($node);        return simplexml_import_dom($node, $className);    }    public function expandDomDocument($version = "1.0", $encoding = "UTF-8")    {        $element = $this->expand();        $document = new DomDocument($version, $encoding);        $node = $document->importNode($element, true);        $document->appendChild($node);        return $document;    }}?>