code: void tryProcessXmlPage() throws XMLStreamException {
  		try {
  			processXmlPage();
  		} catch (MwDumpFormatException e) {
  			MwRevisionDumpFileProcessor.logger
  					.error("Error when trying to process revision block for page \""
  							+ this.mwRevision.getPrefixedTitle()
  							+ "\" (namespace "
  							+ this.mwRevision.getNamespace()
  							+ ", id "
  							+ this.mwRevision.getPageId()
  							+ "): "
  							+ e.toString());
  
  			MwRevisionDumpFileProcessor.logger.info("Trying to recover ...");
  			while (this.xmlReader.hasNext()) {
  				this.xmlReader.next();
  				if (this.xmlReader.getEventType() == XMLStreamConstants.END_ELEMENT
  						&& this.xmlReader.getLocalName().equals(MwRevisionDumpFileProcessor.E_PAGE)) {
  					MwRevisionDumpFileProcessor.logger
  							.info("... recovery successful. Continuing processing.");
  					return;
  				}
  			}
  			MwRevisionDumpFileProcessor.logger
  					.error("Recovery failed. Could not process remaining XML.");
  		}
  	}
docs: Tries to processes current XML starting from a &lt;page&gt; start tag up
  to the corresponding end tag using {@link #processXmlPage()}. If this
  fails for some reason, it tries to recover to read all remaining page
  blocks nonetheless.
  
  @throws XMLStreamException
  if there was a problem reading the XML