1

私はスプリング ブート レスト アプリケーションに取り組んでおり、xml 応答を送り返す必要があるシナリオがあります。以下のように JAXB クラスを作成しました。

@XmlRootElement(name = "Response")
public class ResponseDTO{

private String success;
private List<String> xmls; 

}

私のコントローラークラスは以下の通りです:

public class MyController{

@RequestMapping(value = "/processrequest/v1", method = RequestMethod.POST,      produces = "application/xml")
public ResponseEntity processHotelSegments(@RequestBody String xmlString) {
    ResponseDTO response = new ResponseDTO();
    response.setSuccess("true");

    String xml1 = "<triggerProcess id = '1'><code>true</code>    </triggerProcess>";
    String xml2 = "<triggerProcess id = '2'><code>false</code></triggerProcess>";
    List<String> list = new ArrayList<>();
    list.add(xml1);
    list.add(xml2);


    response.setXmls(list);
    return new ResponseEntity<>(response, HttpStatus.CREATED);

}
}

そして、私は以下のようなxml応答を期待しています:

<Response>
    <success>true</success>
        <xmls>
            <triggerProcess id = '1'>
                <code>true</code>
            </triggerProcess>
            <triggerProcess id = '2'>
                <code>false</code>
            </triggerProcess>
        </xmls>
</Response>

つまり、文字列値 (xml1 と xml2 も xml に変換する必要があります)。しかし、私は以下のようになっています:

<Response>
    <success>true</success>
        <xmls>
            <triggerProcess id = '1'><code>true</code></triggerProcess><triggerProcess id = '2'><code>false</code></triggerProcess>
        </xmls>
</Response>

ここで、xml (xml1 および xml2) は xml に変換されず、要素の文字列値として表示されます。例外として出力を取得するのを手伝ってくれる人はいますか。前もって感謝します。

4

2 に答える 2

1

xmlsオブジェクトのリストではなく、文字列のリストとしてキャプチャしています。の子をオブジェクトとしてキャプチャする場合は、xmls以下のように JAXB オブジェクトでそのように定義する必要があります。要素を表すオブジェクトxmlsのリストに 変更します。TriggerProcesstriggerProcess

@XmlRootElement(name = "Response")
public class ResponseDTO{

private String success;
private List<TriggerProcess> xmls; 

}

@XmlRootElement(name = "triggerProcess")
class TriggerProcess{
   @XmlAttribute
   private String id;
   @XmlElement
   private String code;
}
于 2015-12-15T17:29:40.230 に答える
0

あなたが示すxmlの違いはわかりません:

初め:

<Response>
    <success>true</success>
        <xmls>
            <triggerProcess id = '1'>
                <code>true</code>
            </triggerProcess>
            <triggerProcess id = '2'>
                <code>false</code>
            </triggerProcess>
        </xmls>
</Response>

セカンド(フォーマット後)

<Response>
    <success>true</success>
        <xmls>
            <triggerProcess id = '1'>
                <code>true</code>
            </triggerProcess>
            <triggerProcess id = '2'>
               <code>false</code>
            </triggerProcess>
        </xmls>
</Response>

あなたの問題は何ですか?たぶん、すべて大丈夫ですか?

于 2015-12-15T17:27:28.997 に答える