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文档,您可以在输出后重置它,然后解组它.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |