У меня есть единственный Java-компонент, который уже аннотирован для JPA, который я также хочу сохранить как XML, в частности FIXML . Цель состоит в том, чтобы управлять отображением bean-компонента в XML с помощью аннотаций.
Я вижу связанные темы в Интернете об указании схемы и разрешении JAXB генерировать классы, но я не хочу этого делать.
Я искал при использовании аннотаций JAXB, но мне кажется, что мне нужно создать новые классы для каждого дочернего элемента. Я стараюсь держаться подальше от этого и позволяю аннотациям показывать, как создавать дочерние элементы. JAXB, похоже, не хочет этого делать.
Возможно ли это и как? Нужно ли мне делать собственные аннотации и забывать о JAXB?
Bean:
@Entity
@XmlRootElement(name="FIXML")
@XmlType(name="ExecRpt")
public class ExecutionReport implements Serializable {
private String account;
private String senderCompID;
@Column(name="ACCOUNT", nullable=true, length=64)
@XmlAttribute(name="Acct")
public String getAccount() {
return this.account;
}
public void setAccount(String account) {
this.account = account;
}
@Column(name="SENDER_COMP_ID", nullable=true, length=200)
@XmlAttribute(name="SID")
public String getSenderCompID() {
return this.senderCompID;
}
public void setSenderCompID(String senderCompID) {
this.senderCompID = senderCompID;
}
}
Анализ:
JAXBContext context = JAXBContext.newInstance(ExecutionReport.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); //pretty print XML
marshaller.marshal(executionReport, System.out);
Желаемый результирующий XML:
Текущий результирующий XML:
Я явно не пока не предоставлено достаточно информации для сопоставления дочерних элементов, но я также не уверен, как ее предоставить. Я хочу добавить несколько аннотаций @XmlElement, но у меня нет дочерних объектов, все данные находятся в этом классе.
Плюс в том, что мой XML не намного сложнее, чем этот пример; есть только несколько элементов, и они появляются только один раз в сообщении. У меня возникают проблемы с получением нескольких элементов из одного компонента.