2015-05-21 5 views
1

Как показано ниже, у меня есть класс POJO с инкубационными и геттерами:объекта XML не генерируется правильно Java в случае нескольких объектов

public class InvoiceReferenceNotificationMessage { 
    private String InvoiceReference; 
    private String ABSReference; 
    private String Currency; 
    private double InvoiceAmount; 
    private double PaidAmount; 
    private double BalanceAmount; 
    private Date ValueDate; 
    private String Remarks; 
} 

и ниже класс, в котором выше, на которую ссылаются :

public class Mail { 
    @SuppressWarnings("unused") 
    private InvoiceReferenceNotificationMessage invoiceReferenceNotificationMessage; 

    public InvoiceReferenceNotificationMessage getInvoiceReferenceNotificationMessage() { 
     return invoiceReferenceNotificationMessage; 
    } 

    public void setInvoiceReferenceNotificationMessage(
      InvoiceReferenceNotificationMessage invoiceReferenceNotificationMessage) { 
     this.invoiceReferenceNotificationMessage = invoiceReferenceNotificationMessage; 
    } 
} 

Я использую xstream для создания xml объекта. У меня нет никакой проблемы, создавая единый объект в Java, как показано ниже:

public class InvoiceReferenceNotificationMessagetest { 

    InvoiceReferenceNotificationMessage invoiceReferenceNotificationMessage = new InvoiceReferenceNotificationMessage(); 
    invoiceReferenceNotificationMessage.setInvoiceReference("S15"); 
    invoiceReferenceNotificationMessage.setABSReference("IRMA1"); 
    invoiceReferenceNotificationMessage.setCurrency("GBP"); 
    invoiceReferenceNotificationMessage.setInvoiceAmount(25746); 
    invoiceReferenceNotificationMessage.setPaidAmount(18245); 
    invoiceReferenceNotificationMessage.setBalanceAmount(90); 
    invoiceReferenceNotificationMessage.setValueDate(new Date()); 
    invoiceReferenceNotificationMessage.setRemarks("abc"); 


    Mail m = new Mail(); 
    m.setInvoiceReferenceNotificationMessage(invoiceReferenceNotificationMessage); 
    XStream xstream = new XStream(); 
    xstream.alias("brokermail",Mail.class); 
    String abc = xstream.toXML(m); 
} 

тегов, которые я наконец-то будет, как показано ниже:

<brokermail> 
    <invoiceReferenceNotificationMessage> 
    <InvoiceReference>dffg</InvoiceReference> 
    <ABSReference>Ifgfg</ABSReference> 
    <Currency>Ggfg</Currency> 
    <InvoiceAmount>2554546.0</InvoiceAmount> 
    <PaidAmount>125445.0</PaidAmount> 
    <BalanceAmount>0454.0</BalanceAmount> 
    <ValueDate>2015-:34.165 IST</ValueDate> 
    <Remarks>abc</Remarks> 
    </invoiceReferenceNotificationMessage> 
    <invoiceReferenceNotificationMessage> 
    <InvoiceReference>xxRRR5</InvoiceReference> 
    <ABSReference>IRMAR15657311</ABSReference> 
    <Currency>EUR</Currency> 
    <InvoiceAmount>2545446.0</InvoiceAmount> 
    <PaidAmount>154245.0</PaidAmount> 
    <BalanceAmount>045.0</BalanceAmount> 
    <ValueDate>2015-05-20 21:34:34.165 IST</ValueDate> 
    <Remarks>abffc</Remarks> 
    </invoiceReferenceNotificationMessage> 
</brokermail> 

, но я изменил мой почтовый класс для хранения нескольких объектов в моде ниже

public class Mail { 
    private List<InvoiceReferenceNotificationMessage> invoiceReferenceNotificationMessage = new ArrayList<InvoiceReferenceNotificationMessage>(); 

    public List<InvoiceReferenceNotificationMessage> getInvoiceReferenceNotificationMessages() { 
     return invoiceReferenceNotificationMessage; 
    } 

    public void addInvoiceReferenceNotificationMessages(List<InvoiceReferenceNotificationMessage> invoiceReferenceNotificationMessages) { 
     this.invoiceReferenceNotificationMessage = invoiceReferenceNotificationMessages; 
    } 
} 

теперь, когда я создаю объекты, как показано ниже ..

List<InvoiceReferenceNotificationMessage> invoiceReferenceNotificationMessagest = new ArrayList<InvoiceReferenceNotificationMessage>(); 
     invoiceReferenceNotificationMessagest.add(invoiceReferenceNotificationMessage); 
     invoiceReferenceNotificationMessagest.add(invoiceReferenceNotificationMessage1); 

     Mail m = new Mail(); 
     m.addInvoiceReferenceNotificationMessages(invoiceReferenceNotificationMessagest); 

XStream xstream = new XStream(); 
     xstream.alias("brokermail",Mail.class); 
     String abc = xstream.toXML(m); 

Я получаю тег, как показано ниже:

<brokermail> 
    <invoiceReferenceNotificationMessage> 
    <com.jms.InvoiceReferenceNotificationMessage> 
     <InvoiceReference>SM/829743434309/0315</InvoiceReference> 
     <RBSReference>IRMAR34343157311</RBSReference> 
     <Currency>GBP</Currency> 
     <InvoiceAmount>23434546.0</InvoiceAmount> 
     <PaidAmount>124345.0</PaidAmount> 
     <BalanceAmount>0.0</BalanceAmount> 
     <ValueDate>2015-05-21 17:51:26.188 IST</ValueDate> 
     <Remarks>abc</Remarks> 
    </com.jms.InvoiceReferenceNotificationMessage> 
    <com.rbsfm.ice.ioa.jms.InvoiceReferenceNotificationMessage> 
     <InvoiceReference343>SM/4315</InvoiceReference> 
     <RBSReference>I157311</RBSReference> 
     <Currency>EUR</Currency> 
     <InvoiceAmount>2554546.0</InvoiceAmount> 
     <PaidAmount>12543545.0</PaidAmount> 
     <BalanceAmount>0.0</BalanceAmount> 
     <ValueDate>2015-05-21 17:51:26.188 IST</ValueDate> 
     <Remarks>abERRc</Remarks> 
    </com.jms.InvoiceReferenceNotificationMessage> 
    </invoiceReferenceNotificationMessage> 
</brokermail> 

Который не является правильным, поскольку я ищу ниже один должен прийти, пожалуйста, посоветуйте, как этого добиться.

<brokermail> 
    <invoiceReferenceNotificationMessage> 
    <InvoiceReference>AA/54545829709/0315</InvoiceReference> 
    <RBSReference>IRMA4545R157311</RBSReference> 
    <Currency>GBP</Currency> 
    <InvoiceAmount>255446.0</InvoiceAmount> 
    <PaidAmount>124545.0</PaidAmount> 
    <BalanceAmount>0.0</BalanceAmount> 
    <ValueDate>2015-05-20 21:34:34.165 IST</ValueDate> 
    <Remarks>abc</Remarks> 
    </invoiceReferenceNotificationMessage> 
    <invoiceReferenceNotificationMessage> 
    <InvoiceReference>xx/8245459709/0315</InvoiceReference> 
    <RBSReference>IRMAR545157311</RBSReference> 
    <Currency>GBP</Currency> 
    <InvoiceAmount>2545456.0</InvoiceAmount> 
    <PaidAmount>124455.0</PaidAmount> 
    <BalanceAmount>0.0</BalanceAmount> 
    <ValueDate>2015-05-20 21:34:34.165 IST</ValueDate> 
    <Remarks>abc</Remarks> 
    </invoiceReferenceNotificationMessage> 
</brokermail> 

Как вы можете увидеть ниже тег является

<com.jms.InvoiceReferenceNotificationMessage> 

это дополнительные, которые не требуют, пожалуйста, сообщите мне о том, как преодолеть это.

ответ

0

изменение:

private List<InvoiceReferenceNotificationMessage> invoiceReferenceNotificationMessage = 
new ArrayList<InvoiceReferenceNotificationMessage>(); 

к:

@XStreamImplicit(itemFieldName="invoiceReferenceNotificationMessage") 
    private List<InvoiceReferenceNotificationMessage> InvoiceReferenceNotificationMessage = 
new ArrayList<InvoiceReferenceNotificationMessage>(); 

и добавить:

xstream.processAnnotations(Mail.class); 
+0

он показывает мне ошибку compliation для аннотаций XStreamImplicit, редактор затмений он советует создать аннотация XStreamImplicit, пожалуйста, сообщите, как продолжить –

+0

У вас есть все необходимое XStrea m банок в вашем пути сборки? Вы импортируете аннотацию XStreamImplicit в своем классе? Например: import com.thoughtworks.xstream.annotations.XStreamImplicit; – Stugal

+0

Я добавил этот импорт импорта com.thoughtworks.xstream.XStream; –

 Смежные вопросы

  • Нет связанных вопросов^_^