Qiita初めての投稿。(お試し投稿を兼ねる)
##POJOオブジェクト型変数をXML形式で返却するには
元々POJOオブジェクト型変数をjson/xml形式でResponseへ自動変換するには、
xml.java
@XmlRootElement(name = "test")
@XmlType
上記の様なアノテーションをつけるだけで、あとはコントローラ側のメソッドが自動で返してくれるものだと思っていたが、そうなるのはJSON形式の場合のみの様で、XML形式にしたい場合は、
build.gradle
compile('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.1')
と、設定を追記してあげる必要があるみたい。
POJOの使い方が微妙っぽかったので修正しました。
(2018/02/16追記)
XMLを入れ子にしたり、XMLタグの表示方法などを細かく設定している場合は、
こちらのサイト様のJAXBに関する記述も書く必要があるみたい。
各コントローラの戻り値には(任意のHttpStatusも入れたかったので) ResponceEntity<XML化したいBean>
の様に書いていたのが、
戻り値をResponceEntity<String>
にして、
StringWriter sw = new StringWriter();
JAXB.marshal(BeanToXMLClass,sw);
return ResponceEntity<>(sw.toString(), HttpStatus.OK);
の様にしてあげることで、
無事に変換後のXML文字列とステータスコード:200が渡された。