2011-03-07 64 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