in core/cocoon-pipeline/cocoon-pipeline-impl/src/main/java/org/apache/cocoon/components/sax/AbstractXMLByteStreamInterpreter.java [91:188]
protected void parse() throws SAXException {
this.list.clear();
this.checkProlog();
int event = -1;
int lastEvent = -1;
while ( ( event = readEvent() ) != -1 ) {
lastEvent = event;
switch (event) {
case START_DOCUMENT:
contentHandler.startDocument();
break;
case END_DOCUMENT:
contentHandler.endDocument();
break;
case START_PREFIX_MAPPING:
contentHandler.startPrefixMapping(this.readString(), this.readString());
break;
case END_PREFIX_MAPPING:
contentHandler.endPrefixMapping(this.readString());
break;
case START_ELEMENT:
int attributes = this.readAttributes();
AttributesImpl atts = new AttributesImpl();
for (int i = 0; i < attributes; i++) {
atts.addAttribute(this.readString(), this.readString(), this.readString(), this.readString(), this.readString());
}
contentHandler.startElement(this.readString(), this.readString(), this.readString(), atts);
break;
case END_ELEMENT:
contentHandler.endElement(this.readString(), this.readString(), this.readString());
break;
case CHARACTERS:
char[] chars = this.readChars();
int len = chars.length;
while (len > 0 && chars[len-1]==0) len--;
if (len > 0) contentHandler.characters(chars, 0, len);
break;
case IGNORABLE_WHITESPACE:
char[] spaces = this.readChars();
len = spaces.length;
while (len > 0 && spaces[len-1]==0) len--;
if (len > 0) contentHandler.characters(spaces, 0, len);
break;
case PROCESSING_INSTRUCTION:
contentHandler.processingInstruction(this.readString(), this.readString());
break;
case COMMENT:
chars = this.readChars();
len = chars.length;
while (len > 0 && chars[len-1]==0) len--;
if (len > 0) lexicalHandler.comment(chars, 0, len);
break;
case LOCATOR:
{
String publicId = this.readString();
String systemId = this.readString();
int lineNumber = this.read();
int columnNumber = this.read();
org.xml.sax.helpers.LocatorImpl locator = new org.xml.sax.helpers.LocatorImpl();
locator.setPublicId(publicId);
locator.setSystemId(systemId);
locator.setLineNumber(lineNumber);
locator.setColumnNumber(columnNumber);
contentHandler.setDocumentLocator(locator);
}
break;
case START_DTD:
lexicalHandler.startDTD(this.readString(),
this.readString(),
this.readString());
break;
case END_DTD:
lexicalHandler.endDTD();
break;
case START_CDATA:
lexicalHandler.startCDATA();
break;
case END_CDATA:
lexicalHandler.endCDATA();
break;
case SKIPPED_ENTITY:
contentHandler.skippedEntity( this.readString() );
break;
case START_ENTITY:
lexicalHandler.startEntity( this.readString() );
break;
case END_ENTITY:
lexicalHandler.endEntity( this.readString() );
break;
default:
throw new SAXException ("parsing error: event not supported: " + event);
}
}
if( lastEvent != END_DOCUMENT )
{
throw new SAXException ("parsing error: premature end of stream (lastEvent was " + lastEvent + ")." );
}
}