1

我正在开发 spring-boot rest 应用程序,并且我有一个需要发回 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为字符串列表而不是对象列表。如果您希望捕获xmlsas Objects 的子对象,则需要在 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 回答