C'è un modo in cui possiamo annullare un marshall per una classe senza l'annotazione @XmlRootElement? O siamo obbligati a inserire l'annotazione?UnMarshalling di JAXB senza annotazione XmlRootElement?
ad esempio:
public class Customer {
private String name;
private int age;
private int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
e lasciare che il codice di deserializzazione per la classe correttamente annotati essere come:
try {
File file = new File("C:\\file.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println(customer);
} catch (JAXBException e) {
e.printStackTrace();
}
tralasciando i dettagli.
in prova alternativa per fare 'private' tutti gli attributi, altrimenti con o senza' XmlRootElement', JAXB non funziona – Xstian
nel modo descritto sopra di voi non avrà bisogno di altre annotazioni, tranne ' @ XmlAttribute' e '@ XmlElement' ma descrivono l'output – Xstian
È necessario eseguire il marshalling prima di unmarshalling? –