Tôi cần trợ giúp một chút với Chú thích JAXB và tôi không thể tìm thấy tài liệu hay giúp tôi tìm ra điều này.Chú thích JAXB
Tôi có một lớp học mà tôi muốn sắp xếp thành XML. Lớp của tôi trông như thế này:
@XmlRootElement(name="car")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
"vid",
"make",
"model",
"recalls",
"engSpec"
})
public class Car {
@XmlElement(name="vid", required=true)
private String vid;
@XmlElement(name="make", required=true)
private String make;
@XmlElement(name="model", required=true)
private String model;
@XmlElement(name="recalls", required=true)
private ArrayList<Recall> recalls;
@XmlElement(name="engSpec", required=true)
private EngSpec engSpec;
...
Và lớp thu hồi trông như thế này:
@XmlRootElement(name = "recall")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(propOrder = {
"type",
"date"
})
public class Recall {
@XmlElement(name="type", required=true)
private String type;
@XmlElement(name="date", required=true)
private String date;
...
Vì vậy, nó tạo ra XML này:
<car>
<vid>vid</vid>
<make>make</make>
<model>model</model>
<recalls>
<type>Recall1</type>
<date>01/01/11</date>
</recalls>
<recalls>
<type>Recall2</type>
<date>01/01/11</date>
</recalls>
<engSpec>
<power>200HP</power>
<size>size</size>
</engSpec>
</car>
Nhưng những gì tôi muốn ArrayList để hiển thị khác, như sau:
<car>
<vid>vid</vid>
<make>make</make>
<model>model</model>
<recalls>
<recall>
<type>Recall1</type>
<date>01/01/11</date>
</recall>
<recall>
<type>Recall2</type>
<date>01/01/11</date>
</recall>
</recalls>
<engSpec>
<power>200HP</power>
<size>size</size>
</engSpec>
</car>
Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này? Tôi nghĩ rằng vấn đề là với lược đồ của tôi, nhưng tôi sử dụng vấn đề này cho marshalling:
JAXBContext jc = JAXBContext.newInstance(Car.class);
Marshaller marsh = jc.createMarshaller();
marsh.marshal(car, out);
Bất kỳ ý tưởng nào để sửa lỗi này? Cảm ơn!
Nhân tiện, nếu tên thuộc tính bean của bạn giống với phần tử XML, bạn không cần phải chỉ định chú thích '@ XmlElement' ... lưu toàn bộ chuỗi nhập. :) – limc