javax.xml.bind.UnmarshalException:意外元素(uri:“”,local:“Managers”)。预期元素为< {} Manager>

时间:2016-08-17 07:55:47

标签: java xml jaxb wsdl2java

我知道在SO上有很多像这样的问题,但没有一个为我提供正确的答案,所以我走了。

这是我得到的XML:

<?xml version="1.0" encoding="UTF-8"?>
<Managers>
   <Manager ManagerID="1996" />
   <Manager ManagerID="1997" />
   <Manager ManagerID="1998" />
   <Manager ManagerID="1999" />
   <Manager ManagerID="2000" />
</Managers>

这是相关的java类:

@XmlRootElement(name = "Managers")
@XmlAccessorType(XmlAccessType.FIELD)
public class ManagerList {

    @XmlElement(name = "Manager")
    private List<Manager> Managers = null;

    public List<Manager> getList() {
        return Managers;
    }

    public void setList(List<Manager> Managers) {
        this.Managers = Managers;
    }
}

最后这里是解组部分:

String stringManagers = //Here is the above XML(as String), i get it from an external source
StringReader reader = new StringReader(stringManagers);
JAXBContext context;
Unmarshaller un;

context = JAXBContext.newInstance(ManagerList.class);
un = context.createUnmarshaller();

ManagerList managerList = (ManagerList) un.unmarshal(reader);

我使用wsdl2java生成java类,我有一个package-info.java类,其命名空间使用XmlSchema注释定义。

但我仍然得到错误:

javax.xml.bind.UnmarshalException: unexpected element (uri:“”, local:“Managers”). Expected elements are <{}Manager>

任何想法都会受到赞赏,

提前致谢!

1 个答案:

答案 0 :(得分:0)

好的,似乎我最近使用API​​来改变我的XML,即使我使用wsdl2java重新生成类,Eclipse也很难理解。

我只需要清理它,然后重新开始上课。

抱歉“愚蠢”的问题!