java xml映射_例举 Java与XML映射利器

熟悉Hibernate的朋友都知道,它可以把Java类和数据库表进行映射,通过操作Java对象的方式可以对表记录进行更新。这可以大大增加我们的开发效率,免去自己直接通过JDBC操作数据库表的繁琐过程。其实Mybatis也是类似的,只不过它是半自动的,需要自己写SQL。在利用Java开发基于XML的操作时你会不会也想要一款可以直接基于Java类建立对应的XML的映射关系,然后可以直接通过Java对象转换为对应的XML,或者可以直接通过XML转换为对应的Java对象的工具呢?如果你正在寻找这样一款工具,那么JAXB可以满足你的需求。JAXB是Java提供的一款Java和XML绑定(映射)的工具,建立起了对应的关系后,就可以直接通过一个简单的API就可以实现Java对象和XML之间的相互转换。

假设现在有一个User类,其结构如下,需要把它的对象转换为根节点为user的XML,其中User对象的每一个属性需要映射为XML的user节点下的一个字节点。那么我们只需要简单的在User类上标注@XmlRootElement即可,这表示类User需要映射为XML的一个根节点,对应的节点名称是user(这是JAXB的默认策略,默认取类名称的首字母小写形式作为根节点名称),如果不希望使用默认名称,也可以通过name属性指定自己想要的名称,就像下面示例中那样。就加一个注解就搞定了,是不是非常简单呢?

55062f51eb928eb407229e9293bc869e.png

这时候我们使用下面的代码来进行测试,最核心的代码就是JAXB.marshal(user, System.out),它表示需要把user对象转换为对应的XML形式,并把它输出到控制台(System.out),其中的JAXB类是Java自带的一个JAXB工具类。

d7afe4f1e0e25cc013b3acba4daf4653.png

应用上面的测试代码会在控制台输出如下XML内容。是不是非常简单的就把Java对象转换为XML了。如果我们是基于DOM或者dom4j等编程,则我们需要一步步的调用很多的API,相比而言,这种基于注解进行映射的方式明显简单很多。

b3fdd80517a5a159e17c4b3c2f017c6d.png

如果我们的根节点还是user,但是User类的id属性我们不想把它作为user节点下面的一个字节点,而是作为user节点的一个属性,这种也是很简单的,直接在getId()方法上加上@XmlAttribute注解即可。

33e8e036f506de568e5339c7f425214f.png

这个时候再运行上面的测试代码,生成的XML将是如下这样。

2b70660114d1136458e6f79fed1dbf75.png

如果User类的id属性希望作为user节点的一个属性,但是属性名称不希望使用默认的id,则可以通过@XmlAttribute的name属性指定一个我们想要的名称,比如下面指定的就是id1。

27e3d2974152d91144d75e7fe3b27b84.png

这时候生成的XML会是如下这样。

0ac3c892ec04547c16e8ddf79a35efa6.png

同样的,如果name属性映射的节点名称不希望是name,希望是name1,则我们可以通过@XmlElement(name="name1")来指定。

b5d8794b8085ca023736adbd4f847994.png

这时候生成的XML会是如下这样。

6895a5a82046df45c5221e094c680df5.png

上面介绍的都是定义了Java类与XML的映射关系后,把Java对象转换为XML的示例。接下来我们来看如下示例中把XML转换为Java对象。

9b5dd4228523ccb3b15a65d925c429e8.png

是不是非常简单呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值