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

最後に、プロバイダーにxml/application形式で応答を送信してもらいました。ただし、解決策として、私が見つけたオプションは、コンテンツをファイルとして保存してから、ファイルからコンテンツを再度取得することです。

于 2012-12-03T10:26:17.517 に答える
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 に答える