2014-03-05 2 views
3

내 클라이언트가 DropWizard/Jersey를 사용 중입니다.JAXB를 사용하여 XML을 개체로 변환하는 방법

xml 형식으로 응답을 받고 있습니다. 그것은 다음과 같습니다

@XmlSchema(
     namespace = "http://webservices.amazon.com/AWSECommerceService/2011-08-01", 
     elementFormDefault = XmlNsForm.QUALIFIED) 

package com.aerstone.services.core.handlerpojos.amazon; 


import javax.xml.bind.annotation.XmlNsForm; 
import javax.xml.bind.annotation.XmlSchema; 

마지막으로, 나는이처럼 보이는 POJO 있습니다

enter image description here

나는 다음과 같은 내용 package-info.java라는 파일을 만들었습니다. 지금은 제목과 ASIN을 매핑하려고합니다.

 JAXBContext context = JAXBContext.newInstance(AmazonItem.class); 
     Unmarshaller unMarshaller = context.createUnmarshaller(); 
     newItem = (AmazonItem) unMarshaller.unmarshal(response); 

하지만이 오류 받고 있어요 :

@XmlRootElement(name="ItemSearchResponse") 
public class AmazonItem 
{ 
    private String name; 
    private String asin; 

    public AmazonItem(){} 

    @XmlJavaTypeAdapter(CollapsedStringAdapter.class) 
    @XmlElement(name="Title") 
    public String getName() 
    { 
     return name; 
    } 
    public void setName(String name){this.name = name;} 

    @XmlJavaTypeAdapter(CollapsedStringAdapter.class) 
    @XmlElement(name="ASIN") 
    public String getAsin(){ return asin;} 

    public void setAsin(String asin){ this.asin = asin; } 
} 

나는 이런 식으로 사용하고

! javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"ItemLookupResponse"). Expected elements are <{http://webservices.amazon.com/AWSECommerceService/2011-08-01}ItemSearchResponse> 

답변

1

당신이로 시작하는 문서를 비 정렬 화하려고 :

<ItemLookupRespons> 

XML 문서 대신 당신이 비 정렬 화하려고하는 문서가 유효 XML 스키마에서 JAXB 모델을 만든 경우

<ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2011-08-01"> 

은 당신이 당신의 JAXBContext 생성의 패키지 이름을 생성해야합니다 : 시작 당신이 당신의 질문에이 t 모델 또는 해당 모델의 모든 클래스를 가져 오기 위해 생성 된 ObjectFactory 클래스에 있습니다.

관련 문제