2013-10-25 2 views
1

나는 JAXB를 사용하여 비 정렬 화 꽤 새로운 해요,하지만 난 모든 권리 아직 내가 런타임에이 오류를 받고 있어요 구성된있어 것 같아요 : 난Jaxb2Marshaller의 비 정렬 화 - 예상치 못한 요소

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://xml.product.place.com/prod/alerts/v_1_0", local:"Record"). Expected elements are (none) 

몇개의 XSD를 기반으로하는 JaxB에 의해 생성 된 POJO를 사용하여 꽤 복잡한 XML 파일을 비 정렬 화합니다.

<PlaceAlerts xmlns="http://xml.product.place.com/prod/alerts/v_1_0""> 
<Information> 
    <ReportType>EIFK</ReportType> 
    <Number>401ZC00155</Number> 
    <ReportDate>2005-02-05</ReportDate> 
</Information> 
<Record> 
    <id>123</id> 
    <cid><![CDATA[12327*312457495]]></ccid> 
... 
</PlaceAlerts> 

XML 파일에 간다,하지만 오류가 기록 여는 태그에 온다 :

다음은 XML의 관련 부분입니다.

여기 Record.java입니다 :

package com.etc.etc.etc; 
import javax.xml.bind.annotation.XmlAccessType; 
import javax.xml.bind.annotation.XmlAccessorType; 
import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 
import javax.xml.bind.annotation.XmlType; 

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(name = "", propOrder = { 
    "id", 
    "cid", 
    "alerts" 
}) 
@XmlRootElement(name = "Record") 
public class Record { 

    @XmlElement(required = true) 
    protected Object id; 
    @XmlElement(required = true) 
    protected Object cid; 
    @XmlElement(name = "Alerts", required = true) 
    protected Alerts alerts; 

    public Object getId() { 
     return id; 
    } 

    public void setId(Object value) { 
     this.id = value; 
    } 
    public Object getCid() { 
     return cid; 
    } 
    public void setCid(Object value) { 
     this.cid = value; 
    } 
    public Alerts getAlerts() { 
     return alerts; 
    } 
    public void setAlerts(Alerts value) { 
     this.alerts = value; 
    } 
} 

그리고 콩 선언 :

<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 

    <property name="packagesToScan"> 
     <list> 
      <value>com.etc.etc.etc.*</value> 
     </list> 
    </property> 
</bean> 

어떤 생각? 다른 것을보고 싶다면 알려주세요.

+0

xsd 파일의 관련 섹션을 게시하십시오. 당신의 문제를 봤어 그리고이 발견하지만 xsd 섹션없이 내가 줄 수 없어 http://bozhobg.wordpress.com/2009/12/18/jaxb-javax-xml-bind-unmarshalexception-unexpected-element/ – user2880879

답변

1

문제를 발견했지만 문제의 근본 원인이 아닙니다. "packagesToScan"속성을 "classesToBeBound"속성으로 변경했습니다. 웬일인지, 나는 클래스가 꾸러미 패턴 일치 자에 의해 주워지고 있다고 생각하지 않는다. 누군가가 내가 예상대로 packagesToScan가 작동하지 않은 이유에 어떤 통찰력이있는 경우

<bean id="unmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller"> 
    <property name="classesToBeBound"> 
     <list> 
      <value>com.etc.etc.etc.Alert</value> 
      <value>com.etc.etc.etc.Channel</value> 
      etc... 
     </list> 
    </property> 
</bean> 

, 내가 그것을 듣고 싶어요 : 여기에 변경거야.

+0

나도 똑같은 문제를 겪고있다. 해결할 방법을 찾았습니까? – Diluu