java接收xml数据_关于java后台如何接收xml格式的数据

业务场景:用户发送下单请求,格式为xml格式,服务器接收数据完成下单,并返回结果给客户。

请求格式:

这段请求报文是xml格式的,在后台我们可以使用 javax.xml.bind.annotation 这个包格式化数据。

我们可以在做数据对应的dto是用@XmlElement注释标注对应节点

比如:

importjava.io.Serializable;importjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlAccessorType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRootElement;importorg.apache.commons.lang.builder.ToStringBuilder;importorg.apache.commons.lang.builder.ToStringStyle;importcom.juqitech.adapter.dto.ChannelDTO;

@XmlRootElement(name= "request")

@XmlAccessorType(XmlAccessType.NONE)public class RequestDTO implementsSerializable {private static final long serialVersionUID = -1;

@XmlElementprivateRequestHeaderDTO head;

@XmlElementprivateRequestBodyDTO body;publicRequestHeaderDTO getHead() {returnhead;

}public voidsetHead(RequestHeaderDTO head) {this.head =head;

}publicRequestBodyDTO getBody() {returnbody;

}public voidsetBody(RequestBodyDTO body) {this.body =body;

}

}

@XmlRootElement(name = "request")可以定义在类上,代表根节点

@XmlAccessorType(XmlAccessType.FIELD)

表示使用这个类中的 private 非静态字段作为 XML 的序列化的属性或者元素。这里还可以选择属性,也就是使用 set/get 方法来序列化属性或者元素。

关键在于在请求中有个extendInfos的array数组,一般我们都会用list来表示,所以在RequestBodyDTO中可以这么写:

importjava.io.Serializable;importjavax.xml.bind.annotation.XmlAccessType;importjavax.xml.bind.annotation.XmlAccessorType;importjavax.xml.bind.annotation.XmlElement;importjavax.xml.bind.annotation.XmlRootElement;importorg.apache.commons.lang.builder.ToStringBuilder;importorg.apache.commons.lang.builder.ToStringStyle;importcom.juqitech.adapter.dto.ChannelDTO;

@XmlRootElement(name= "body")

@XmlAccessorType(XmlAccessType.NONE)public class RequestBodyDTO implementsSerializable {private static final long serialVersionUID = -1;//....前面的属性省略

@XmlElementWrapper(name="extendInfos")

@XmlElement(name="extendInfo")private ListextendInfos;//。。其他的省略

}

@XmlRootElement(name= "extendInfo")

@XmlAccessorType(XmlAccessType.NONE)public classextendInfo{

@XmlElementprivateString city;

@XmlElementprivateString province;

@XmlElementprivateString district;//省略

}

@XmlElementWrapper 这个注释用来在外面在包一层,用于处理list集合

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值