问题读取XML子,http POST,Spring MVC
问题描述:
我已经有实现将xml数据发布到我的控制器,但我正在尝试阅读由于我给予的XML格式的数据而导致的数据问题。问题读取XML子,http POST,Spring MVC
我的控制器:
@RequestMapping(method = RequestMethod.POST, consumes = {MediaType.APPLICATION_XML_VALUE}, produces = {MediaType.APPLICATION_XML_VALUE})
public ResponseEntity<?> SlaDetails(@RequestBody AgentSla[] task_sla) {
MessageDto messageDto = new MessageDto();
for (AgentSla next: task_sla){
System.out.println(next.getStage());
}
messageDto.setMsg("ok");
return ResponseEntity.status(HttpStatus.CREATED).body(messageDto);
}
我的实体:
@XmlRootElement(name="task_sla")
public class AgentSla {
private Long id;
private String stage;
private String timezone;
//getters and setters
XML文档样本:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<task_sla>
<stage>boo</stage>
<timezone display_value="IN">12345</timezone>
</task_sla>
<task_sla>
<stage>foo</stage>
<timezone display_value="SR">12345</timezone>
</task_sla>
</xml>
的问题:我可以读取XML的任何值“subchilds “即”<stage>boo</stage>
“或< /timezone>
我遇到的问题是“<timezone display_value="IN">12345</timezone>
”。在这个孩子只读取值“12345”,但我也需要“display_value =”SR“”值。 是否可以读取该值或...我应该放弃。
答
你应该做一个新的类timezone
领域和使用@XmlAttribute
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "timezone")
public class Timezone {
@XmlAttribute(name = "display_value")
private String displayValue;
@XmlValue
private String timezoneValue;
// write your getters and setters
}
然后使用Timezone
类在
@XmlRootElement(name="task_sla")
public class AgentSla {
private Long id;
private String stage;
private Timezone timezone;
// getters and setters
}
在这里看到:
How can I add xml attributes to jaxb annotated class XmlElementWrapper?
- 正确,但我将如何绑定在我的控制器对我的AgentSla类? – user2342259
用'Timezone timezone'替换'String timezone' – shawn