2017-09-15 7 views
0

Je veux juste convertir un objet Java simple à XML et dans l'objet Java aucun des éléments sont mentionnés comme @XmlRootElement et @XmlAttribute. Est-ce possible avec JAXB?Convertir objet Java en XML sans @XmlRootElement dans la classe Java

Mon objet Java ressemble ci-dessous:

public class myrequest implements java.io.Serializable { 
    private java.lang.String id; 

    private java.lang.String code; 

    private java.lang.String type; 

    private java.lang.String name; 

    private java.lang.String count; 
and getters and setters.... 

Répondre

0

Vous pouvez rassembler votre objet Java sans avoir besoin d'annotations JAXB en utilisant les méthodes de la classe marshal javax.xml.bind.JAXB.

Cité de son javadoc:

classe qui définit des méthodes pratiques pour l'usage commun, simple JAXB.
Les méthodes définies dans cette classe sont des méthodes pratiques combinant plusieurs opérations de base dans JAXBContext, Unmarshaller et Marshaller. Ils sont conçus pour être les méthodes préférées pour les développeurs nouveaux à JAXB.

Vous pouvez l'utiliser par exemple comme ceci:

myrequest obj = new myrequest(); 
obj.setId("1"); 
obj.setCode("2"); 
obj.setCount("3"); 
JAXB.marshal(obj, System.out); 

Et vous obtiendrez la sortie XML suivante:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<myrequest> 
    <code>2</code> 
    <count>3</count> 
    <id>1</id> 
</myrequest> 
0

Oui; Si vous voulez faire cela, alors vous devez créer un JAXBElement<myrequest> et le passer au marshaller, au lieu de passer directement un myrequest au marshaller. Exemple:

myrequest request = ...; 

JAXBContext context = new JAXBContext(myrequest.class); 
Marshaller marshaller = context.createMarshaller(); 

// Create a JAXBElement wrapper 
JAXBElement<myrequest> element = new JAXBElement<>(request); 

// Pass that to the marshaller 
marshaller.marshall(element, System.out);