Unmarshaller异常javax.xml.bind.UnmarshalException: unexpected element处理方法

在marshaller/Unmarshaller开发过程中可能会遇到javax.xml.bind.UnmarshalException: unexpected element异常,比如

unexpected element (uri:"", local:"Group"). Expected elements are <{}group>

Meet an exception when unmarshalling from xml

JAXBContext jc = JAXBContext.newInstance(Group.class);

Unmarshaller unmarshaller = jc.createUnmarshaller();

Group group = (User)unmarshaller.unmarshal(new File("group.xml"));

通常的解决方法是:

  1. Change the root element on your XML to be "group"
  2. Add the annotation @XmlRootElement(name="Group") to the Group classs.

但有时这样做了,还是不能解决问题。原因在于ObjectFactory类。

在开发的过程中我们可能是根据XSD文件(XML文件的格式文件),通过JDK的/bin/xjc.exe生成java文件。有些时候我们会手工修改生成后的java文件;有些时候XSD文件会有冲突,我们会删除冲突的文件,分别生成java文件,这样就导致了xjc生成的ObjectFactory.java中没有包含全部的与XSD文件对应的方法。所以在删除冲突的XSD文件,分别生成java文件以后,要手动修改ObjectFactory.java,使之包含所有生成的java类的createXXX()方法。这样再编译打包,重现运行,就不会出现javax.xml.bind.UnmarshalException: unexpected element异常了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值