我正在开发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>
即,String值(xml1和xml2也应该转换为xml)。但我得到如下:
<Response>
<success>true</success>
<xmls>
<triggerProcess id = '1'><code>true</code></triggerProcess><triggerProcess id = '2'><code>false</code></triggerProcess>
</xmls>
</Response>
其中xmls(xml1和xml2)未转换为xml,而是显示为元素的String值。任何人都可以帮助我获得输出作为例外。 提前谢谢。
答案 0 :(得分:1)
您正在将xmls
捕获为字符串列表而不是对象列表。如果你希望捕获xmls
的子对象作为对象,那么你需要在JAXB对象中以这种方式定义它们,如下所示。将您的xmls
更改为代表TriggerProcess
元素的triggerProcess
对象列表。
@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;
}
答案 1 :(得分: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>
你的问题是什么?可能,一切都好吗?