2011-03-07 96 views
1

我生成了一些類,我從我調用的Web服務響應中創建了一個xsd。 我在運行從Web服務調用中讀入InputStream的JUnit測試類時收到異常。 我堅持爲異常的意思,所以我在尋找的東西一些想法,以檢查:JAXB Unmarshal異常

javax.xml.bind.UnmarshalException: Unexpected element {http://bar.foo.com/bbs}:rule 

我有一個類中我生成的類在:

com.foo.bar.bbs.Rule 

不異常意味着我在適當的包中沒有Rule類?

回答

0

確保您正在解組正確的對象類型。

3

下面有一些事情要檢查:

@XmlRootElement

檢查規則類都被註解@XmlRootElement:

@XmlRootElement 
public class Rule { 
} 

@XmlElementDecl

或者在th中有一個相應的@XmlElementDecl ËObjectFactory類:

@XmlElementDecl(namespace = "http://bar.foo.com/bbs", name = "root") 
public JAXBElement<Root> createCustomer(Root value) { 
    return new JAXBElement<BigInteger>(_ROOT_QNAME, Root.class, null, value); 
} 

@XmlSchema

您還需要確保命名空間信息被正確指定。軟件包信息類可能爲您生成如下所示的內容。確保指定了正確的名稱空間。

@XmlSchema( 
    namespace = "http://bar.foo.com/bbs", 
    elementFormDefault = XmlNsForm.QUALIFIED) 
package com.foo.bar.bbs; 

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

或者,也可以包括在@XmlRootElement註釋命名空間:

@XmlRootElement(namespace="http://bar.foo.com/bbs") 
public class Rule { 
} 

欲瞭解更多信息,請參閱:

+0

+1也爲您的博客! :) – 2011-07-24 12:29:44