Как я могу упорядочить один Java-компонент в сложный XML-документ с существующими аннотациями?

У меня есть единственный 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 не намного сложнее, чем этот пример; есть только несколько элементов, и они появляются только один раз в сообщении. У меня возникают проблемы с получением нескольких элементов из одного компонента.

6
задан Greg Chabala 26 January 2011 в 22:41
поделиться