in doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractXmlParser.java [217:262]
private void parseXml(XmlPullParser parser, Sink sink, String reference)
throws XmlPullParserException, MacroExecutionException {
sink.setDocumentLocator(new XmlPullParserLocator(parser, reference));
int eventType = parser.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if (eventType == XmlPullParser.START_TAG) {
handleStartTag(parser, sink);
} else if (eventType == XmlPullParser.END_TAG) {
handleEndTag(parser, sink);
} else if (eventType == XmlPullParser.TEXT) {
String text = getText(parser);
if (isIgnorableWhitespace()) {
if (text.trim().length() != 0) {
handleText(parser, sink);
}
} else {
handleText(parser, sink);
}
} else if (eventType == XmlPullParser.CDSECT) {
handleCdsect(parser, sink);
} else if (eventType == XmlPullParser.COMMENT) {
handleComment(parser, sink);
} else if (eventType == XmlPullParser.ENTITY_REF) {
handleEntity(parser, sink);
} else if (eventType == XmlPullParser.IGNORABLE_WHITESPACE) {
// nop
} else if (eventType == XmlPullParser.PROCESSING_INSTRUCTION) {
// nop
} else if (eventType == XmlPullParser.DOCDECL) {
addLocalEntities(parser, parser.getText());
for (byte[] res : CachedFileEntityResolver.ENTITY_CACHE.values()) {
addDTDEntities(parser, new String(res));
}
}
try {
eventType = parser.nextToken();
} catch (IOException io) {
// Does not have a cause arg
throw new XmlPullParserException("Failed to parse next token", parser, io);
}
}
}