2017-11-27 10 views
0
<bas:person> 

      <req:vehicleinfo> 
       <!--Zero or more repetitions:--> 
       <bas:item> 
        <sch:modelno>k10</sch:modelno> 
        <sch:type>bs4</sch:type> 
       </bas:item> 
<bas:item> 
        <sch:modelno>k12</sch:modelno> 
        <sch:type>bs5</sch:type> 
       </bas:item> 
      </req:extensionInfo> 
    </bas:person> 

Assume namespace for bas is some http://xxxxx.person.com 
for req is http://xxxxx.request.com 
for bas http://xxxxx.bas.com 
for sch http://xxxxx.sch.com 

私はJavaオブジェクトで複数の値を持つ可能性があるため、ここでは車両情報をいくつかのプロジェクト依存関係にする必要があります。ここでヌル値を与えるネストされたxmlデータの非整列

は私のJavaクラスは、私は

SOAPMessage message = MessageFactory.newInstance().createMessage(null, 
       new ByteArrayInputStream(xmlInput.getBytes())); 
     JAXBContext jaxbContext = JAXBContext.newInstance(Person.class); 
     Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
     Person person= (Person) jaxbUnmarshaller.unmarshal(message.getSOAPBody().extractContentAsDocument()); 

を非整列化するために、次のコードを使用していますが、mは車両のためのNULように、キーと値の取得

@XmlRootElement(name="person") 
@XmlAccessorType(XmlAccessType.FIELD) 
    public class Person implements Serializable{ 


     @XmlElement(name="vehicleinfo",namespace="http://xxxxx.request.com") 
     private VehicleInfo[] vehicleinfo; 


// getter & setter 

    } 

車両情報

@XmlAccessorType(XmlAccessType.FIELD) 
    public class VehicleInfo{ 

     @XmlAttribute(name="modelno",namespace="http://xxxxx.sch.com") 
     private String key; 
     @XmlAttribute(name="type",namespace="http://xxxxx.sch.com") 
     private String value; 

//getter and setter 

    } 

です情報

+0

'VehicleInfo'と' Person'にゲッターとセッターを定義しましたか? –

+0

はい!私は質問にスキップ –

答えて

1

Javaには動的配列がないため、JAXBは本質的に配列では機能しません。代わりにVehicleInfoをArrayListとして宣言します。

+0

上記のコードは、私は配列リスト –

+0

@valdimに車両情報を変更するか、うまく動作するか、いくつかの変更を加える必要があります –

+0

実際には、車両情報はアイテムのコレクションです。 ItemにはmodelNoとtypeがあります。だから別のクラスItemが必要です。 – Vadim

関連する問題