Gibt es eine Möglichkeit, uns für eine Klasse ohne @ XmlRootElement-Annotation zu entfernen? Oder sind wir verpflichtet, die Annotation einzugeben?JAXB-Unmarshalling ohne XmlRootElement-Annotation?
zum Beispiel:
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;
}
}
und lassen Sie den unmarshalling Code für richtig kommentierte Klasse wie:
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();
}
die Details auszulassen.
in alternativen Versuch 'private' alle Attribute zu machen, sonst mit oder ohne' XmlRootElement', wird JAXB funktioniert nicht – Xstian
auf die oben beschriebenen Sie erhalten keine andere Anmerkungen benötigen, außer ' @ XmlAttribute' und '@ XmlElement', aber sie beschreiben die Ausgabe – Xstian
Ist es notwendig, vor dem Zurückmarshallen zu marshallieren? –