2017-12-17 12 views
0

IavaのSOAPサービスにデータを送信したいとします。Javaで子ノードを持つSOAPメッセージを作成する

My IDE - Intellij Ultimateは、2つの主要なクラスSalesとItem、ObjectFactory、SetSaleRequest、SetSaleResponseを自動生成しています。私はSaleインスタンスを作成できましたが、子アイテムを追加する方法はわかりません。

XML

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:typ="urn:some.com.au/schema/common/types"> 
    <soap:Header/> 
    <soap:Body> 
     <typ:setSalesRequest> 
     <!--Optional:--> 
     <typ:Sale> 
      <!--Optional:--> 
      <typ:Table>?</typ:Table> 
      <!--Optional:--> 
      <typ:SalesNo>?</typ:SalesNo> 
      <typ:EnteredDateTime>2017-12-17T11:02:00.000+12:00</typ:EnteredateTime> 
      <typ:SaleDateTime>?</typ:SaleDateTime> 
      <!--Optional:--> 
      <typ:Address>?</typ:Address> 
      <typ:Summary>?</typ:Summary> 
     </typ:Sale> 
     <!--Zero or more repetitions:--> 
     <typ:Item> 
      <!--Optional:--> 
      <typ:ItemCode>?</typ:ItemCode> 
      <!--Optional:--> 
      <typ:ItemDesc>?</typ:ItemDesc> 
      <!--Optional:--> 
      <typ:ItemCost>?</typ:IetmCost> 
     </typ:Item> 
     </typ:setSalesRequest> 
    </soap:Body> 
</soap:Envelope> 

コードは、これまで:

// SALE 
    Sale sale = new Sale(); 
    sale.setTable("East"); 
    ... 
    sale.setSalesNo("INV001"); 

    // ITEM 
    Item item = new Item(); 
    item.setItemCode("ABC123"); 
    ... 
    item.setItemCost("$12.00"); 

    SetSaleRequest request = new SetSaleRequest(); 
    SetSaleResponse response = new SetSaleResponse(); 
    request.setSale(sale); 
    SaleService saleService = new SaleService(); 
    ISaleService isaleService = saleService.getWSHttpBindingIISRService(); 
    isaleService.setSale(request); 

はXMLでsetSalesRequestの子されている項目にもかかわらず、そこにあるしかし、項目を追加するためにさらさ方法はありません。

私はObjectFactory(これはWDSLから自動生成された別のクラスです)を使用する必要があると思います。

このリクエストにアイテムを追加するにはどうすればよいですか?

+0

:あなたのケースでは、SetSaleRequestに項目を追加するための構文は、(ビットカウンタ - 直感的に)なり、 .add(item); '。 –

+0

が完璧です。それを答えさせて、そのようにマークします。 –

答えて

2

JAXBによって生成されたクラスは、直接addXYZ()メソッドのisteadのリストにアクセスするためのゲッターを提供するように、要素のリストを処理します。 )( `request.getItems:通常、これはこのような要素のリストを持っているJAXBで生成されたクラスで行われ

request.getItems().add(item); 
関連する問題