Acerca de Conversor XML Java
Pega tu XML y obtén definiciones de clases Java. Soporta POJOs (Java 8/11), Records (Java 17/21) y anotaciones JAXB, Jackson o Gson.
Preguntas frecuentes
¿Qué es la generación de clases Java desde XML?
La generación de clases Java desde XML analiza un documento XML y produce definiciones de clases Java con anotaciones JAXB. Cada elemento XML se convierte en una clase con campos @XmlElement y cada atributo en un campo @XmlAttribute, listos para que JAXBContext los deserialice.
¿Cuál es la diferencia entre JAXB, DOM, SAX y StAX para XML en Java?
DOM carga el documento completo en un árbol (bueno para archivos pequeños, acceso aleatorio). SAX es orientado a eventos y eficiente en memoria (bueno para archivos grandes, procesamiento en un solo paso). StAX es un modelo de eventos de extracción (más control que SAX, menos memoria que DOM). JAXB mapea XML directamente a objetos Java anotados (mejor para XML definido por esquema y la mayoría de los servicios web).
¿Cómo uso la clase Java generada con JAXB para el unmarshalling de XML?
Añade @XmlRootElement a la clase y @XmlAttribute a los campos de atributos. Luego: JAXBContext ctx = JAXBContext.newInstance(TuClase.class); Unmarshaller u = ctx.createUnmarshaller(); TuClase obj = (TuClase) u.unmarshal(new File("datos.xml")). JAXB está incluido en Java 8 y anteriores; para Java 11 o superior, añade la dependencia jaxb-ri.
¿En qué se diferencian los atributos XML de los elementos hijo en la clase Java generada?
El generador anota los campos de atributos con @XmlAttribute y los campos de elementos con @XmlElement. En el documento analizado, los atributos se definen dentro de la etiqueta de apertura (<usuario id="1">), mientras que los elementos hijo son etiquetas anidadas (<nombre>Ana</nombre>). La distinción es importante para leer y escribir XML correctamente con JAXB.
¿Cómo gestiono los elementos XML hijo repetidos (arrays) con JAXB?
Para un elemento repetido <item>, declara un campo List<Item> anotado con @XmlElement(name = "item"). JAXB rellenará la lista con un objeto por elemento <item>. Para @XmlElementWrapper, añade un elemento envolvente alrededor de la lista: @XmlElementWrapper(name = "items") @XmlElement(name = "item") List<Item> items.
Advertisement300 × 250
Advertisement300 × 250