使用SpringMvc接收xml数据

308 阅读1分钟

请求数据

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Request>
	<Header>
		<SourceSystem>221212</SourceSystem>
		<MessageID>2121212</MessageID>
	</Header>
	<Body>
		<CT_CareProvList>
			<CT_CareProv>
				<CTCP_DeptCode>测试单位</CTCP_DeptCode>
				<CTCP_DeptHierarchyCode>23233232</CTCP_DeptHierarchyCode>
				<CTCP_Email>32323@qq.com</CTCP_Email>
				<CTCP_JobNumber>323233</CTCP_JobNumber>
				<CTCP_Name>姓名</CTCP_Name>
				<CTCP_PositionStatus>2</CTCP_PositionStatus>
				<CTCP_Remarks>备注</CTCP_Remarks>
				<CTCP_Telephone>1545454545</CTCP_Telephone>
			</CT_CareProv>
		</CT_CareProvList>
	</Body>
</Request>
  • 因为请求数据xml标签为大写字母开头,每个字段都需要在javabean里进行配置

返回数据

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Response>
    <body>
        <resultCode>0</resultCode>
        <resultContent>成功</resultContent>
    </body>
    <header>
        <MessageID>2121212</MessageID>
        <SourceSystem>221212</SourceSystem>
    </header>
</Response>

Controller设置

/**
     * 用户信息同步接口
     */
    @ResponseBody
    @RequestMapping(value = "sync", method = RequestMethod.POST, produces = "application/xml;charset=utf-8")
    public UserSyncResult userInfoSync(@RequestBody UserSyncParam UserSyncParam) {
        String paramStr = JSONObject.toJSONString(UserSyncParam);
        System.out.println(paramStr);
        UserSyncResult result = new UserSyncResult();
        result.setHeader(UserSyncParam.getHeader());
        UserSyncResultBody resultBody = UserSyncResultBody.success();
        result.setBody(resultBody);
        return result;
    }
  • 注意设置produces = "application/xml;charset=utf-8",否则会返回json格式数据

javaBean配置

设置xml请求体根标签

@XmlRootElement(name ="Request")
public class UserSyncParam implements Serializable {

    // @XmlElement
    private UserSyncHeader Header;

    private UserSyncBody Body;

    @XmlElement(name = "Header")
    public UserSyncHeader getHeader() {
        return Header;
    }

    public void setHeader(UserSyncHeader header) {
        Header = header;
    }

    @XmlElement(name = "Body")
    public UserSyncBody getBody() {
        return Body;
    }

    public void setBody(UserSyncBody body) {
        Body = body;
    }
}
  • 使用@XmlElement标签转化请求数据,注意此注解需要加在get方法上
public class UserSyncHeader implements Serializable {

    private String SourceSystem;

    private String MessageID;

    @XmlElement(name = "SourceSystem")
    public String getSourceSystem() {
        return SourceSystem;
    }

    public void setSourceSystem(String sourceSystem) {
        SourceSystem = sourceSystem;
    }

    @XmlElement(name = "MessageID")
    public String getMessageID() {
        return MessageID;
    }

    public void setMessageID(String messageID) {
        MessageID = messageID;
    }
}
  • 使用@XmlElement标签转化请求数据,其他类同理

接收list数据

public class UserSyncBody implements Serializable {

    private List<UserSync> CT_CareProvList;

    @XmlElementWrapper(name = "CT_CareProvList")
    @XmlElements(
            @XmlElement(name = "CT_CareProv")
    )
    public List<UserSync> getCT_CareProvList() {
        return CT_CareProvList;
    }

    public void setCT_CareProvList(List<UserSync> CT_CareProvList) {
        this.CT_CareProvList = CT_CareProvList;
    }
}

  • 使用@XmlElementWrapper@XmlElements转化请求数据