如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误:
org.xml.sax.saxparseexception : premature end of file
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new InputSource(inputStream)。即你是按如下方式调用下面提供的方法的
InputStream msgInputStream = new ClassPathResource("data/MessageSample.xml").getInputStream();
Wrapper messageWrapper = parseMessage(msgInputStream, Wrapper.class);
解决方案是,首先将文件内容读成字符串content,让后用字符串构建ByteArrayInputStream bis,由bis来构建source就不会报错了。InputSource inputSource = new InputSource(bis),即如下使用上面的parseMessage方法
parseMessage(new ByteArrayInputStream(content.getBytes()), targetType)
文中用到的parseMessage方法
private <E> E parseMessage(InputStream inputStream, Class<E> targetType) throws JAXBException, SAXException, ParserConfigurationException {
InputSource inputSource = new InputSource(inputStream);
JAXBContext jc = JAXBContext.newInstance("generated.vo");
Unmarshaller unmarshaller = jc.createUnmarshaller();
final SAXParserFactory sax = SAXParserFactory.newInstance();
sax.setNamespaceAware(true);
final XMLReader reader = sax.newSAXParser().getXMLReader();
final Source source = new SAXSource(reader, inputSource);
JAXBElement<E> el = unmarshaller.unmarshal(source, targetType);
E vo = el.getValue();
return vo;
}
分享到:
相关推荐
赠送jar包:jakarta.xml.bind-api-2.3.2.jar; 赠送原API文档:jakarta.xml.bind-api-2.3.2-javadoc.jar; 赠送源代码:jakarta.xml.bind-api-2.3.2-sources.jar; 赠送Maven依赖信息文件:jakarta.xml.bind-api-...
标题 "javax.xml.bind jdk1.5缺包" 指出的问题是在使用Java 1.5版本时,遇到了与`javax.xml.bind`相关的类找不到的异常。具体来说,异常信息 "java.lang.ClassNotFoundException: ...
赠送jar包:jaxb-api-2.3.1.jar; 赠送原API文档:jaxb-api-2.3.1-javadoc.jar; 赠送源代码:jaxb-api-2.3.1-sources.jar; 赠送Maven依赖信息文件:jaxb-api-2.3.1.pom; 包含翻译后的API文档:jaxb-api-2.3.1-...
【标题】"javax.xml.bind.jar" 是一个Java开发中常用的工具包,主要包含了Java对象到XML数据绑定的API,这是Java标准版(Java SE)的一部分,用于帮助开发者将Java类和XML文档之间的转换自动化,从而简化了XML处理。...
- `jaxb-api`: 提供了Java XML绑定(JAXB)API,用于将XML文档与Java对象互相转换。 - `jaxb-core`和`jaxb-impl`: 这两个是JAXB的具体实现,与`jaxb-api`配合使用。 - `jakarta.xml.ws-api`:Jakarta XML Web ...
Java Architecture for XML Binding (JAXB) 是Java平台中用于XML数据绑定的标准库,它使得Java对象和XML文档之间可以进行无缝转换。在给定的压缩包文件中,包含了一些核心的JAXB组件以及相关的依赖库,如`jaxb-impl....
JAXB2,全称为Java Architecture for XML Binding 2,是Java平台上的一个标准技术,用于在XML和Java对象之间进行绑定。它允许开发者通过简单的API将XML文档转换为Java对象,反之亦然,大大简化了XML数据处理。JAXB2...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准API。它使得在Java应用程序中使用XML数据变得更加方便,无需手动编写大量的转换代码。本教程将详细介绍JAXB如何实现...
赠送jar包:jaxb-api-2.3.0.jar; 赠送原API文档:jaxb-api-2.3.0-javadoc.jar; 赠送源代码:jaxb-api-2.3.0-sources.jar; 赠送Maven依赖信息文件:jaxb-api-2.3.0.pom; 包含翻译后的API文档:jaxb-api-2.3.0-...
这种机制在处理像JAXB(Java Architecture for XML Binding)或JAX-WS这些标准库的升级时非常有用,因为标准JRE可能包含较旧的版本,而项目可能需要最新的API功能。 `javax.xml.ws.Service` 报错通常是由于以下原因...
Java Architecture for XML Binding (JAXB) 是Java平台中用于XML到Java对象绑定的标准技术,它允许开发者在Java程序中直接操作XML数据,而无需编写大量的XML解析和序列化代码。JAXB 2.3.0是该技术的一个版本,包含了...
这些文件是Java编程环境中常用的库文件,主要用于XML绑定(Java Architecture for XML Binding,JAXB)和JavaBeans Activation Framework(JAF)。在Java应用程序开发中,尤其是处理XML数据时,这些库扮演着至关重要...
5. **配置CXF**:创建一个CXF的服务器配置,这通常通过XML文件完成,例如`cxf-servlet.xml`: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi=...
com.sun.xml.bind jaxb-impl 2.1.7 com.sun.xml.messaging.saaj saaj-impl 1.3.1 com.sun.xml.stream.buffer streambuffer 0.7 com.sun.xml.stream sjsxp 1.0.1 javax.xml.ws jaxws-api 2.1 org.jvnet.staxex stax-...
**JAXB(Java Architecture for XML Binding)** 是Java平台中用于XML到Java对象绑定的API,它是Java EE和Java SE标准的一部分,允许开发者在Java应用程序中方便地将XML数据转换为Java对象,反之亦然。这个过程极大...
`javax.xml.bind.JAXBException`是Java的一个标准API,属于Java绑定(JAXB)框架的一部分,用于XML到Java对象的映射。这个错误表明系统在尝试加载该类时遇到了问题,可能是由于以下原因: 1. **JDK版本不兼容**:...
Java Architecture for XML Binding (JAXB) 是Java平台中用于处理XML和Java对象之间转换的一个标准技术。它允许我们将XML文档转换为Java对象,反之亦然,使得数据交换变得更加简单。在Java开发中,JAXB是处理XML数据...
JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_API.chm,Java+XML绑定技术.doc JAXB_2.2_...
Maven坐标:org.plutext:jaxb-svg11:1.0.2; 标签:plutext、svg11、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构...
- 创建SAX解析器:使用`org.xml.sax.helpers.DefaultHandler`定义事件处理器,并通过`org.xml.sax.XMLReader`设置处理器。 - 解析XML文件:使用`XMLReader`的`parse()`方法解析XML文件。 - 处理事件:在事件处理器的...