JAXB or Jackson XML — which does the output target?
The generator emits JAXB annotations (@XmlRootElement, @XmlElement, @XmlAttribute, @XmlValue) since JAXB is the standard Java EE / Jakarta EE binding. The same POJO class can be reused with Jackson XML by adding @JacksonXmlRootElement and @JacksonXmlProperty(isAttribute = true) — Jackson is forgiving about extra annotations and will use whichever it understands.
How are XML attributes mapped to Java fields?
XML attributes (e.g. <book id="bk101">) become private fields annotated with @XmlAttribute(name = "id"). They are exposed via standard getter/setter methods. The attribute name is preserved exactly so JAXB unmarshalling round-trips correctly. Element values (<title>...</title>) instead receive @XmlElement.
Does the output use jakarta.xml.bind or javax.xml.bind?
The default import is jakarta.xml.bind.annotation.* for Jakarta EE 9+ and Spring Boot 3+. For Java EE 8 / Spring Boot 2 projects still on JAXB 2, change the import to javax.xml.bind.annotation.* — the annotation names are identical, only the package moved.
How are repeated elements like <tag> in <tags> represented?
Repeated child elements become a List<TagType> field on the parent class. JAXB automatically marshals and unmarshals the list against repeated <tag> elements when @XmlElement is present on the field.
What about XML namespaces?
The basic generator strips namespaces from element names and produces unqualified Java fields. For namespace-aware binding add namespace = "http://example.com/ns" to @XmlElement and @XmlRootElement, or use a package-info.java with @XmlSchema(namespace = ...) so JAXB applies it to every class in the package.
Can elements with both attributes and text content be modeled?
Yes. <price currency="USD">45.99</price> generates a class with two fields — currency annotated with @XmlAttribute and a value field annotated with @XmlValue. JAXB unmarshals the text content into the @XmlValue field while populating attributes separately.
Is the XML I paste sent to your servers?
No. XML is parsed by the browser DOMParser and the Java code is generated entirely in JavaScript on your machine. Open DevTools → Network and you will see no requests when you click Convert. Safe for SOAP responses and configuration files containing API keys or credentials.
How do I unmarshal XML into the generated POJOs?
Use JAXB Unmarshaller: JAXBContext ctx = JAXBContext.newInstance(Book.class); Book b = (Book) ctx.createUnmarshaller().unmarshal(new StringReader(xml)); — the annotated fields are populated automatically. For Spring Boot 3+ the same code works with the jakarta.xml.bind imports.