private void moveCursorBeforeFragmentStart() throws XMLStreamException { XMLEvent event = eventReader.peek(); while (!event.isStartElement() || !EventHelper.startElementName(event).equals("fragment")) { eventReader.nextEvent(); event = eventReader.peek(); } }
assertTrue(isFragmentRootElement(EventHelper.startElementName(event2))); QName fragmentName = ((StartElement) event2).getName(); assertTrue(isFragmentRootElement(EventHelper.endElementName(event3)));
assertTrue(EventHelper.startElementName(eventReader.peek()).equals("fragment")); assertTrue(fragmentReader.nextEvent().isStartDocument()); assertTrue(EventHelper.startElementName(fragmentReader.nextEvent()).equals("fragment")); assertTrue(EventHelper.endElementName(fragmentReader.nextEvent()).equals("fragment"));
/** * Cursor is moved before beginning of next fragment. */ @Test public void testMoveCursorToNextFragment() throws XMLStreamException, FactoryConfigurationError, IOException { Resource resource = new ByteArrayResource(xml.getBytes()); XMLEventReader reader = StaxUtils.createXmlInputFactory().createXMLEventReader(resource.getInputStream()); final int EXPECTED_NUMBER_OF_FRAGMENTS = 2; for (int i = 0; i < EXPECTED_NUMBER_OF_FRAGMENTS; i++) { assertTrue(source.moveCursorToNextFragment(reader)); assertTrue(EventHelper.startElementName(reader.peek()).equals("fragment")); reader.nextEvent(); // move away from beginning of fragment } assertFalse(source.moveCursorToNextFragment(reader)); }
/** * Cursor is moved to the end of the fragment as usually even * if nothing was read from the event reader after beginning * of fragment was marked. */ public void testMarkFragmentProcessedImmediatelyAfterMarkFragmentStart() throws Exception { moveCursorBeforeFragmentStart(); fragmentReader.markStartFragment(); fragmentReader.markFragmentProcessed(); fragmentReader.nextEvent(); // skip whitespace // the next element after fragment end is <misc2/> XMLEvent misc2 = fragmentReader.nextEvent(); assertTrue(EventHelper.startElementName(misc2).equals("misc2")); }
/** * When fragment is marked as processed the cursor is moved after the end of * the fragment. */ public void testMarkFragmentProcessed() throws XMLStreamException { moveCursorBeforeFragmentStart(); fragmentReader.markStartFragment(); // mark the fragment start // read only one event to move inside the fragment XMLEvent startFragment = fragmentReader.nextEvent(); assertTrue(startFragment.isStartDocument()); fragmentReader.markFragmentProcessed(); // mark fragment as processed fragmentReader.nextEvent(); // skip whitespace // the next element after fragment end is <misc2/> XMLEvent misc2 = fragmentReader.nextEvent(); assertTrue(EventHelper.startElementName(misc2).equals("misc2")); }