Có cách nào chúng tôi có thể hủy kết hợp cho một lớp học không có chú thích @XmlRootElement không? Hay chúng tôi có nghĩa vụ nhập chú thích?JAXB unmarshalling mà không có chú thích XmlRootElement?
ví dụ:
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;
}
}
và để mã unmarshalling cho lớp chú thích đúng được như:
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();
}
bỏ đi các chi tiết.
trong thay thế cố gắng để làm cho 'private' tất cả các thuộc tính, nếu không có hoặc không có' XmlRootElement', JAXB không làm việc – Xstian
Trong cách mô tả ở trên, bạn sẽ không cần bất kỳ chú thích khác, ngoại trừ ' @ XmlAttribute' và '@ XmlElement' nhưng chúng mô tả đầu ra – Xstian
Có cần thiết để marshall trước khi unmarshalling? –