package com.fasterxml.jackson.dataformat.xml.incr; import java.io.*; import javax.xml.stream.*; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import com.fasterxml.jackson.dataformat.xml.XmlTestBase; public class PartialReadTest extends XmlTestBase { private final XmlMapper MAPPER = xmlMapper(true); public void testSimpleRead() throws Exception { final String XML = "<?xml version='1.0'?><root>" +"<NameBean age=\"13\"><first>Grizabella</first><last>Glamour</last></NameBean>" +"<NameBean age=\"17\"><first>Growl</first><last>Tiger</last></NameBean></root>"; XMLStreamReader sr = MAPPER.getFactory().getXMLInputFactory().createXMLStreamReader( new StringReader(XML)); assertEquals(sr.next(), XMLStreamConstants.START_ELEMENT); assertEquals("root", sr.getLocalName()); /* 30-May-2014, tatu: This is bit tricky... need to ensure that currently * pointed to START_ELEMENT is sort of re-read. */ assertEquals(sr.next(), XMLStreamConstants.START_ELEMENT); assertEquals("NameBean", sr.getLocalName()); NameBean bean1 = MAPPER.readValue(sr, NameBean.class); assertNotNull(bean1); assertEquals(sr.getEventType(), XMLStreamConstants.END_ELEMENT); assertEquals("NameBean", sr.getLocalName()); assertEquals(sr.next(), XMLStreamConstants.START_ELEMENT); assertEquals("NameBean", sr.getLocalName()); NameBean bean2 = MAPPER.readValue(sr, NameBean.class); assertNotNull(bean2); assertEquals(sr.getEventType(), XMLStreamConstants.END_ELEMENT); assertEquals("NameBean", sr.getLocalName()); assertEquals(sr.next(), XMLStreamConstants.END_ELEMENT); assertEquals("root", sr.getLocalName()); sr.close(); } }