java和XML转换(二)

@XmlRootElement ,@XmlElementWrapper,@XmlElement,@XmlTransient的使用举例
1 首先是@XmlElementWrapper的使用举例

@XmlRootElement(name = "Message")
@XmlElement(name = "Header")
    private OmsTradeHeader Header;
    @XmlElementWrapper(name = "Orders")
    @XmlElement(name = "Order")
    private List<OmsTradeOrder> Orders;

对于上面这种实体类对应的xml如下

<?xml version='1.0' encoding='UTF-8'?>
<Message>
<Header>阿狸</Header>
<Orders>
<Order>1</Order>
<Order>2</Order>
<Order>3</Order>
</Orders>
</Message>

下面是对比

@XmlRootElement(name = "Message")
@XmlElement(name = "Header")
    private OmsTradeHeader Header;
    @XmlElement(name = "Order")
    private List<OmsTradeOrder> Orders;

对于上面这种实体类对应的xml如下,主要是列表不一样

<?xml version='1.0' encoding='UTF-8'?>
<Message>
<Header>龙猫</Header>
<Order>1</Order>
<Order>2</Order>
<Order>3</Order>
</Message>

2 @XmlTransient的使用主要是xml对应的实体类元素名称有重复的情况下,需要对元素的get方法前添加这个注解。下面是例子

@XmlTransient
            public String getAddressLine1() {
                return addressLine1;
            }
            public void setAddressLine1(String addressLine1) {
                this.addressLine1 = addressLine1;
            }
            @XmlTransient
            public String getAddressLine2() {
                return addressLine2;
            }
            public void setAddressLine2(String addressLine2) {
                this.addressLine2 = addressLine2;
            }

3.1 实体类转xml的java写法

      ByteArrayOutputStream out = new ByteArrayOutputStream();
        JAXBContext cont = JAXBContext.newInstance(Aircity.class);
        Marshaller marsh = cont.createMarshaller();
        marsh.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marsh.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
        marsh.marshal(aircity, out);
        //aircity是Aircity类的对象
        String xml=out.toString();//就得到了我们需要的xml

3.2 java xml转实体类的写法


JAXBContext context = JAXBContext.newInstance(OmsTradeInfo.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
OmsTradeInfo omsTradeInfo = (OmsTradeInfo) unmarshaller.unmarshal(new StringReader(orderData));//orderData是xml文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值