加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

xml-parsing – 使用JAXB和Unmarshaller的文件过早结束.响应中的

发布时间:2020-12-15 23:57:06 所属栏目:百科 来源:网络整理
导读:我不知道该怎么办了.一切似乎都是正确的;输入输出. 我生成xml文件并发送到某些服务进行验证. 回应是: 11:10:34,922 INFO [STDOUT] printing out the input stream?xml version="1.0" encoding="UTF-8" standalone="yes"?Response Method name="XML/Release/
我不知道该怎么办了.一切似乎都是正确的;输入输出.

我生成xml文件并发送到某些服务进行验证.

回应是:

11:10:34,922 INFO  [STDOUT] printing out the input stream
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Response>
    <Method name="XML/Release/New" time="2013-04-23T15:10:35.1446238Z">
        <ResponseStatus>100</ResponseStatus>
    </Method>
</Response>
finished printing out the input stream
11:10:34,922 INFO  [STDOUT] got the unmarshaller
11:10:34,925 ERROR [PRNDataAccessUtil] Caught an error: javax.xml.bind.UnmarshalException
 - with linked exception: [org.xml.sax.SAXParseException: Premature end of file.] : null

代码:

try {
            out = connection.getOutputStream();
            ByteArrayOutputStream bos = PRNPostNewsReleaseUtil.createNewsReleaseXml(newsRelease);
            bos.writeTo(out);

            JAXBContext context = JAXBContext.newInstance(Response.class.getPackage().getName());
            in = connection.getInputStream();

            BufferedReader inp = new BufferedReader(new InputStreamReader(in));
            System.out.println("printing out the input stream");
            String line;
            while((line = inp.readLine()) != null) {
                System.out.println(line);
            }
            System.out.println("finished printing out the input stream");

            Unmarshaller unmarshaller = context.createUnmarshaller();
            response = (Response) unmarshaller.unmarshal(in);

        } catch (Exception ex) {
            log.error("Caught an error: " + ex + " : " + ex.getMessage());
            return null;
        } finally {
            if (null != in) connection.disconnect();
        }
您收到错误是因为InputStream在输出期间已经前进到最后.假设BufferedReader中的缓冲区足够大以包含整个XML文档,您可以在输出后重置它,然后解组它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读