0

我正在调用的 JAX-RS Web 服务将 xml 内容作为 text/html 内容类型抛出。在我这边,我需要读取 xml,并将其转换为 Java 对象。

问题是:响应 xml 的格式不正确,并且在错误的地方有换行符,例如 - 之前有几个换行符<?xml version="1.0" encoding="UTF-8"?>。这导致试图解组它的问题。

有没有办法可以解组响应 xml 字符串,尽管它有格式问题?

提前致谢。

HttpGet httpGet = new HttpGet(uri);
HttpResponse response = client.execute(httpGet);

InputStream inputStream = response.getEntity().getContent();

JAXBContext context = JAXBContext.newInstance(MyClass.class);
MyClass myObj = (MyClass) context.createUnmarshaller().unmarshal(inputStream);
4

2 回答 2

0

如何在解组之前修剪内容:

import org.apache.commons.io.IOUtils; 
import org.apache.commons.lang.CharEncoding;

MyClass myObj = MyClass.class.cast(
  context.createUnmarshaller().unmarshal(
    IOUtils.toInputStream(
      IOUtils.toString(
        InputStream.class.cast(response.getEntity().getContent()),
        CharEncoding.UTF_8
      ).trim(),
      CharEncoding.UTF_8
    )
  )
);
于 2012-11-12T07:30:57.167 回答
0

最后让提供商以 xml/应用程序格式发送响应。但是,作为一种出路,我发现的一个选项是将内容保存为文件,然后再次从文件中检索内容。

于 2012-12-03T10:26:17.517 回答