Given the following Superhero
class:
import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; import lombok.Getter; import lombok.Setter; @XmlRootElement(name = "super-hero") @XmlAccessorType(XmlAccessType.FIELD) @Getter @Setter class SuperHero { @XmlElement(name = "name") String name; @XmlElement(name = "super-power") String superPower; }
You can convert an XML String to a SuperHero
instance with the following code:
import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.StringReader; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import org.junit.jupiter.api.Test; import org.junit.platform.runner.JUnitPlatform; import org.junit.runner.RunWith; @RunWith(JUnitPlatform.class) class TestXmlStringToObjectUnmarshalling { static final String superHeroXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + "<super-hero>" + " <name>Superman</name>" + " <super-power>Flight</super-power>" + "</super-hero>"; @Test void testXmlUnmarshalling() throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(SuperHero.class); Unmarshaller unmarshaller = jaxbContext.createUnmarshaller(); StringReader reader = new StringReader(superHeroXml); SuperHero superHero = (SuperHero) unmarshaller.unmarshal(reader); assertEquals("Flight", superHero.getSuperPower()); } }
Note:
- create a
JAXBContext
which includes theSuperHero
class -JAXBContext.newInstance(SuperHero.class)
- create a JAXB
Unmarshaller
and apply theunmarshal
method to aStringReader
wrapping the text (it could be also aFileReader
or any otherReader
for that matter)
Shared with ❤️ from Codever. Use 👉 copy to mine functionality to add it to your personal snippets collection.
Top comments (0)