`

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 楼 jidu01 2012-12-07  
没明白后面的一段,LZ 能否详细说一下呢。怎样删除XSD,又怎样手动修改ObjectFactory.java呢?

相关推荐

    eurofxref-jaxb

    import javax.xml.bind.Unmarshaller;import io.github.oliverdm.eurofxref.*;// define data sourceURL url = new URL("http://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");// parse XMLJAXBContext ...

    webservice、fusioncharts、xml解析

    T student = (T)unmarshaller.unmarshal(new StringReader(string)); reList.add(student); } catch (JAXBException e) { e.printStackTrace(); } } } return reList; }

    spring-framework-reference4.1.4

    Composing XML-based configuration metadata .......................................... 25 Using the container .......................................................................................... ...

    spring-framework-reference-4.1.2

    Composing XML-based configuration metadata .......................................... 25 Using the container .......................................................................................... ...

    WEBServiceAndJAXB

    web service 是java开源的一个远程调用技术,本项目使用了CXF来实现WEB Service的一个案例,同时项目里面有对JAXB的运用,JAXB技术主要运用在java类与xml之间的转换, Marshaller marshaller = context....

    JAXB技术实现xml与java对象互相转化代码教程

    使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,...•Unmarshaller接口,将XML数据反序列化为Java对象。

    storm-dynamic

    风暴动态 动机: 提供允许用户从配置文件创建风暴拓扑的包。 构建: mvn 包 例子: $storm jar target/storm-dynamic-builder-0.1.0-SNAPSHOT-jar-with-dependencies.jar ... 笔记: 依赖于 Storm 0.9.3 版本...

    rum:Go 中的实验性 Ruby Unmarshaller

    RUMGo 中的实验性 Ruby Unmarshaller参考执照麻省理工学院

    json-unmarshaller

    Elastic Path的JSON Unmarshaller是流行的的扩展。 它使用JsonPath提供了基于注释的将深层JSON对象图分解为浅层POJO的功能。 JsonPath与XPath非常相似,只是用于JSON。 该库利用Java实现。 该库引入了一个字段注释@...

    开源项目-cihangir-nisql.zip

    开源项目-cihangir-nisql.zip,Nisql - Nullable SQL Types with JSON marshaler/unmarshaller support

    Juffrou:适用于我们其余人的Java实用程序框架-开源

    Juffrou代表“我们其余人的Java实用工具框架”,并且是有助于Java开发人员的有用类或微型框架的集合。... 还有一个易于使用的xml marshaller / unmarshaller,具有一些很酷的功能,例如嵌套bean的简化编组。

    java教务系统源码-marshalsec:元帅

    Unmarshaller Security - 将数据转化为代码执行 纸 距离 Chris Frohoff 和 Garbriel Lawrence 展示他们对 Java 对象反序列化漏洞的研究已经两年多了,最终导致了 Java 历史上最大的远程代码执行错误浪潮。 对此事的...

    goq:在goquery库的顶部构建的基于声明的基于结构标记HTML解编或抓取软件包,用于Go

    goq 例 import ( "log" ... "astuart.co/goq" ) // Structured representation for github file name table type example struct { Title string `goquery:"h1"` Files [] string `goquery:"table.files tbody tr.js...

    jsonex:Java对象序列化器和反序列化器为JSON格式。 专注于配置友好性,任意对象序列化和紧凑的JSON格式

    JSONCoder 描述 Jsonex JSONCoder是一个轻量级的通用对象序列化/反序列化库,类似于Jackson,GSON或FastJson。 多年来,该库已在各种eBay项目中广泛使用。 它不能替代其他流行的库。 但是,它解决了一些其他替代产品...

Global site tag (gtag.js) - Google Analytics