2017-11-27 2 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 객체에는 배열과 같은 프로젝트 정보가 프로젝트 종속성에 필요합니다. 여기 null 값을 제공하는 중첩 된 xml 데이터 마샬링 해제

내 자바 클래스

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


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


// getter & setter 

    } 

차량 정보 전

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()); 

를 비 정렬하려면 다음 코드를 사용하고 있지만, 차량 NUL로 키와 값 받고 있어요

@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'에 getters와 setter를 정의 했습니까? –

+0

예 !!! 질문에 건너 뛴다 –

답변

1

Java에 동적 배열이 없기 때문에 JAXB는 기본적으로 배열과 함께 작동하지 않습니다. 대신 VehicleInfo를 ArrayList로 선언하십시오.

+0

위의 코드는 차량 정보를 배열 목록 –

+0

@valdim으로 변경하거나 약간의 변경이 필요합니까? –

+0

실제로 차량 정보는 항목 모음입니다. 항목에 modelNo 및 유형이 있습니다. 그래서 다른 클래스 아이템이 필요합니다. – Vadim