JAXB: JAVA Bean 和 XMl互转
来源:互联网 发布:淘宝手机助手无法登陆 编辑:程序博客网 时间:2024/05/15 12:55
1. 什么是JAXB?
Java Architecture for XML Binding (JAXB)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
这意味着你不需要处理甚至不需要知道XML编程技巧就能在Java应用程序中利用平台核心XML数据的灵活性。而且,可以充分利用XML的优势而不用依赖于复杂的XML处理模型如SAX或DOM。JAXB隐藏了细节并且取消了SAX和DOM中没用的关系——生成的JAXB类仅描述原始模型中定义的关系。其结果是结合了高度可移植Java代码和高度可移植的XML数据。其中这些代码可用来创建灵活、轻便的应用程序和Web服务。
2. JAXB的体系结构
JAXB的体系结构和应用过程如图所示,一般来说包含以下几个步骤:
1) 根据你的应用程序所要操作的XML数据格式,撰写相应的XML Schema,有关XML Schema的知识,请参阅“参考资料”
2) 使用JAXB所带的编译工具(Binding Compiler),将这个XML Schema文件作为输入,产生一系列相关的Java Class和Interface
3) 在使用JAXB编译工具的时候,可以有选择性的提供一个配置文件(图的虚线部分),来控制JAXB编译工具的一些高级属性。
4) 这些Java Class和Interface是你的应用程序操纵XML数据的主要接口和方法。
5) 通过JAXB对XML文档进行的操作主要包括:将符合XML Schema规定的XML文档解析生成一组相应的Java对象;对这些对象进行操作(修改、增加和删除对象的属性等等);然后将这些对象的内容保存到这个XML文档中。
package com.test;import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlElement; public class User { private int id; private String name; @XmlAttribute (name = "id") public int getId() { return id; } public void setId(int id) { this.id = id; } @XmlElement(name = "name") public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return id + ":" + name; } }
package com.test; import java.util.ArrayList;import java.util.List; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name = "users") public class UserList { List<User> users = new ArrayList<User>(); @XmlElement(name = "user") public List<User> getUsers() { return users; } public void setUsers(List<User> users) { this.users = users; } }
package com.test;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStream;import java.util.ArrayList;import javax.xml.bind.JAXBContext;import javax.xml.bind.Marshaller;public class UserGenerateClient {public static void main(String[] args) {try {JAXBContext jc = JAXBContext.newInstance(UserList.class);Marshaller m = jc.createMarshaller();OutputStream os = new FileOutputStream(new File("user2.xml"));UserList list = new UserList();User user = new User();user.setId(100);user.setName("Shawn");list.getUsers().add(user);user = new User();user.setId(200);user.setName("Jason");list.getUsers().add(user);m.marshal(list, os);} catch (Exception e) {e.printStackTrace();}}}
package com.test;import java.net.URL;import javax.xml.bind.JAXBContext;import javax.xml.bind.Unmarshaller;public class UserReadClient {public static void main(String[] args) throws Exception {JAXBContext context = JAXBContext.newInstance(UserList.class);Unmarshaller unmarshaller = context.createUnmarshaller(); URL xmlFileUrl = UserReadClient.class.getResource("user2.xml");UserList userList = (UserList) unmarshaller.unmarshal(xmlFileUrl);for (User m: userList.getUsers()){System.out.println(m.getName());System.out.println(m.getId());}}}
- JAXB: JAVA Bean 和 XMl互转
- JAXB Bean转xml,xml转bean
- JAXB XML转Bean,Bean转XML
- JAXB XML转Bean,Bean转XML
- JAXB实现JAVA BEAN与XML之间的转换
- 使用Java jaxb处理bean生成xml中一些问题
- JAXB实现XML和Java对象绑定
- JAXB实现XML和Java对象绑定
- 使用JAXB处理JAVA和XML
- JAXB-java对象和xml相互转换
- JAVA 和 XML --- JAXB 那些事情
- java对象和xml之间转换--Jaxb
- Java Jaxb JavaBean与XML互转
- java xml和对象bean 互转
- JAXB (1) xml<->Java
- JAXB -java<->xml
- [Java]XML与JAXB
- Java JAXB 生成xml
- (总结)Linux下设置SSH Server保持长时间连接
- 【NPC】22、CIRCUIT-SAT规约到SAT
- tomcat7:dwr下A request has been denied as a potential CSRF attack.
- 我国养老金亏损金额增加
- 哈夫曼树 HDU 1053 HDU 2527
- JAXB: JAVA Bean 和 XMl互转
- Linux下如何使CP命令不提示覆盖
- Linux下批量更改文件名
- HP-UX ntpclient 时间同步 NTP HP-UX系统和网络管理
- 可以让你少奋斗十年的工作经验
- Oracle中的rownum和rowid
- dbms_job与dbms_ijob的对比
- Bug Report For .Net (zz.IS2120@BG57IV3)
- I2C器件的从设备地址设置