private static Split parseSplit(final XMLStreamReader reader) throws XMLStreamException { final Split split = new Split(getAttributeValue(reader, XmlAttribute.ID, true)); split.setAttributeNext(getAttributeValue(reader, XmlAttribute.NEXT, false)); while (reader.hasNext()) { final int eventType = reader.next(); if (eventType != START_ELEMENT && eventType != END_ELEMENT) { continue; } final XmlElement element = XmlElement.forName(reader.getLocalName()); switch (eventType) { case START_ELEMENT: if (element == XmlElement.FLOW) { split.addFlow(parseFlow(reader)); } else { throw BatchLogger.LOGGER.unexpectedXmlElement( reader.getLocalName(), reader.getLocation()); } break; case END_ELEMENT: if (element == XmlElement.SPLIT) { return split; } else { throw BatchLogger.LOGGER.unexpectedXmlElement( reader.getLocalName(), reader.getLocation()); } } } throw BatchLogger.LOGGER.unexpectedXmlElement(reader.getLocalName(), reader.getLocation()); }