`
darrenzhu
  • 浏览: 784025 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Jaxb org.xml.sax.saxparseexception : premature end of file

阅读更多
如果在使用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;
}
分享到:
评论

相关推荐

    jaxb-api-2.3.0-API文档-中英对照版.zip

    赠送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-api-2.3.1-API文档-中文版.zip

    赠送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-...

    JAXB2 jaxb-api.jar jaxb-xjc.jar jaxb-impl.jar activation.jar

    无需安装,解压后即可。jaxb-api.jar,jaxb-xjc.jar,jaxb-impl.jar,activation.jar等相关jar包在lib文件夹下。

    JAXB资料.rar

    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_...

    jdk10+ java.lang.NoClassDefFoundError: javax/xml/ws/Service 错误

    jdk升级之后出现异常:java.lang.NoClassDefFoundError: javax/xml/ws/Service 1、解决方案jdk降级至1.8之前 2、由于JDK9以后,去除了javax.xml包需要引入对应的jar包 &lt;groupId&gt;javax.activation &lt;artifactId&gt;...

    maven-jaxb2-plugin:用于XML模式编译的最先进的JAXB2 Maven插件

    JAXB2 Maven插件欢迎使用org.jvnet.jaxb2.maven2:maven-jaxb2-plugin ,这是用于XML Schema编译的最先进且功能齐全的Maven插件。 这个Maven插件包装并增强了 并允许将XML Schema(以及WSDL,DTD,RELAX NG)编译为...

    jaxb-api-2.2.11-API文档-中文版.zip

    赠送jar包:jaxb-api-2.2.11.jar; 赠送原API文档:jaxb-api-2.2.11-javadoc.jar; 赠送源代码:jaxb-api-2.2.11-sources.jar; 赠送Maven依赖信息文件:jaxb-api-2.2.11.pom; 包含翻译后的API文档:jaxb-api-...

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0

    activation.jar jaxb1-impl.jar jaxb-api.jar jaxb-impl.jar jaxb-xjc.jar jsr173_1.0_api.jar系列jar下载

    jersey-media-jaxb-2.22.2-API文档-中英对照版.zip

    Maven坐标:org.glassfish.jersey.media:jersey-media-jaxb:2.22.2; 标签:glassfish、jersey、media、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可...

    jaxws-rt 2.1.4 jar java webservice依赖包

    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-...

    jaxb2.2.jar

    JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式

    、jackson、xStream、castor、jibx、jaxb2.docx

    、jackson、xStream、castor、jibx、jaxb2.docx

    Dom4j 1.6.1 JAVA API

    dom4j帮助文档 官方API All Classes Packages ...org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom4j.swing org.dom4j.tree org.dom4j.util org.dom4j.xpath org.dom4j.xpp

    JAXB的安装包及插件

    JAXB的安装包及插件

    jaxb-core-2.2.10-b140310.1920-API文档-中文版.zip

    赠送jar包:jaxb-core-2.2.10-b140310.1920.jar; 赠送原API文档:jaxb-core-2.2.10-b140310.1920-javadoc.jar; 赠送源代码:jaxb-core-2.2.10-b140310.1920-sources.jar; 赠送Maven依赖信息文件:jaxb-core-...

    jaxb-api-2.3.0-API文档-中文版.zip

    赠送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-api-2.2.2-API文档-中文版.zip

    赠送jar包:jaxb-api-2.2.2.jar; 赠送原API文档:jaxb-api-2.2.2-javadoc.jar; 赠送源代码:jaxb-api-2.2.2-sources.jar; 赠送Maven依赖信息文件:jaxb-api-2.2.2.pom; 包含翻译后的API文档:jaxb-api-2.2.2-...

    dom4j api 参考手册

    org.dom4j.io Provides input and output via SAX and DOM together with writing dom4j objects to streams as XML text. org.dom4j.jaxb org.dom4j.rule A Pattern based XML rule engine which implements the ...

    jaxb-api-2.2.11-API文档-中英对照版.zip

    赠送jar包:jaxb-api-2.2.11.jar; 赠送原API文档:jaxb-api-2.2.11-javadoc.jar; 赠送源代码:jaxb-api-2.2.11-sources.jar; 赠送Maven依赖信息文件:jaxb-api-2.2.11.pom; 包含翻译后的API文档:jaxb-api-...

    JAVA_API1.6文档(中文)

    javax.xml.transform.sax 此包实现特定于 SAX2 的转换 API。 javax.xml.transform.stax 提供特定于 StAX 的转换 API。 javax.xml.transform.stream 此包实现特定于流和 URI 的转换 API。 javax.xml.validation 此...

Global site tag (gtag.js) - Google Analytics