5

このガイドとまったく同じように、Spring でオブジェクトを XML として返そうとしています: http://spring.io/guides/gs/rest-service/

オブジェクトをJSONではなくxmlとして返すことを除いて。

どうすればそれができるか知っている人はいますか?Spring には、XML に対してこれを簡単に実行できる依存関係がありますか? または、マーシャラーを使用してから、別の方法で xml ファイルを返す必要がありますか?

4

2 に答える 2

11

Spring はデフォルトで JSON をサポートしていますが、XML もサポートするには、次の手順を実行します。

  1. 応答として返す予定のクラスで、xml 注釈を追加します。例えば
    @XmlRootElement(name = "response")
    @XmlAccessorType(XmlAccessType.FIELD) => this is important, don't miss it.
    public class Response {
        @XmlElement
        private Long status;
        @XmlElement
        private String error;

        public Long getStatus() {
            return status;
        }

        public void setStatus(Long status) {
            this.status = status;
        }

        public String getError() {
            return error;
        }

        public void setError(String error) {
            this.error = error;
        }
    }
  1. 以下のように、安静なメソッドで@RequestMappingにプロデュースとコンシュームを追加します。これは、サポートするレスポンスとリクエストの種類を確認するのに役立ちます。レスポンスを xml としてのみ必要な場合は、プロデュース = "application/xml" のみを配置します。
@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"application/xml", "application/json"}, produces = {"application/xml", "application/json"})

公衆

  1. 次に、以下のようにメソッド呼び出しから応答オブジェクトを返すようにしてください。戻り値の型の直前に @ResponseBody を追加できますが、私の経験では、私のアプリはそれがなくても問題なく動作しました。
public Response produceMessage(@PathVariable String topic, @RequestBody String message) {
    return new Response();
}
  1. 現在、複数のプロデュース タイプをサポートしている場合、クライアントが HTTP リクエスト ヘッダーでAcceptとして送信したものに基づいて、 Spring Restful サービスはそのタイプのレスポンスを返します。xml のみをサポートする場合は、'application/xml' のみを生成すると、応答は常に xml になります。
于 2015-05-12T20:57:20.673 に答える
8

Bean で JAXB アノテーションを使用して定義@XmlRootElement@XmlElement、それを xml にマーシャリングする必要がある場合。Spring は、次の場合に Bean を xml にマーシャリングします。

  • JAXB でアノテーションが付けられたオブジェクト
  • クラスパスに存在するJAXBライブラリ
  • 「mvc:annotation-driven」が有効
  • @ResponseBody アノテーションが付けられたメソッドを返す

詳細については、このサンプルに従ってください。

http://www.mkyong.com/spring-mvc/spring-3-mvc-and-xml-example/

于 2013-09-20T15:53:27.430 に答える