xml-parsing - 使用 JAXB 和 Unmarshaller 过早结束文件。响应中的 xml 对我来说看起来有效

标签 xml-parsing jaxb

我不知道该怎么办了。一切看起来都是正确的;输入输出。

我生成 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 文档,您可以在输出后重置它,然后对其进行解码。

关于xml-parsing - 使用 JAXB 和 Unmarshaller 过早结束文件。响应中的 xml 对我来说看起来有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16174013/

相关文章:

java - 当标签名称未知时解析 XML

java - 像 Jackson 一样的 JAXB 多态类型对象编码

java - XML 解码错误

java - 更好/更快的方法? java文本冒险与stax

xml - 功能类似于Excel中的importxml?

python - BeautifulSoup 中 "findAll"和 "find_all"之间的区别

xsd - JAXB 将元素标记为已弃用

java - JAXB - 如何在绑定(bind) Java 类中指定 xml 属性

java - 是否可以使用 jaxb 在此 xml 中进行继承?

java - 如何在 java 的 org.w3c.dom.Node 中获取 TEXT_NODE 的标记名