Java对象和XML转换

有时候,我们需要把Java对象转换成XML文件。这时可以用JAXB来实现。(JDK1.6及以后的版本无需导入依赖包,因为已经包含在JDK里了)

假如某个公司有许多部门,每个部门有许多职员,我们可以这样来设计简单的bean对象。

[java] view plain copy

  1. @XmlRootElement(name="department")
  2. public class Department {
  3. private String name;    //部门名称
  4. private List<Staff> staffs;           // 其实staff是单复同型,这里是加‘s‘是为了区别staff
  5. public String getName() {
  6. return name;
  7. }
  8. @XmlAttribute
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public List<Staff> getStaffs() {
  13. return staffs;
  14. }
  15. @XmlElement(name="staff")
  16. public void setStaffs(List<Staff> staffs) {
  17. this.staffs = staffs;
  18. }
  19. }

[java] view plain copy

  1. @XmlRootElement(name="staff")
  2. public class Staff {
  3. private String name;    // 职员名称
  4. private int age;        // 职员年龄
  5. private boolean smoker; // 是否为烟民
  6. public String getName() {
  7. return name;
  8. }
  9. @XmlElement
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public int getAge() {
  14. return age;
  15. }
  16. @XmlElement
  17. public void setAge(int age) {
  18. this.age = age;
  19. }
  20. public boolean isSmoker() {
  21. return smoker;
  22. }
  23. @XmlAttribute
  24. public void setSmoker(boolean smoker) {
  25. this.smoker = smoker;
  26. }
  27. }

下面将生成一个简单的对象,并转换成XML字符串。

[java] view plain copy

  1. public class Main {
  2. public static void main(String[] args) throws Exception {
  3. JAXBContext context = JAXBContext.newInstance(Department.class,Staff.class);    // 获取上下文对象
  4. Marshaller marshaller = context.createMarshaller(); // 根据上下文获取marshaller对象
  5. marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");  // 设置编码字符集
  6. marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化XML输出,有分行和缩进
  7. marshaller.marshal(getSimpleDepartment(),System.out);   // 打印到控制台
  8. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  9. marshaller.marshal(getSimpleDepartment(), baos);
  10. String xmlObj = new String(baos.toByteArray());         // 生成XML字符串
  11. System.out.println(xmlObj);
  12. }
  13. /**
  14. * 生成一个简单的Department对象
  15. * @return
  16. */
  17. private static Department getSimpleDepartment() {
  18. List<Staff> staffs = new ArrayList<Staff>();
  19. Staff stf = new Staff();
  20. stf.setName("周杰伦");
  21. stf.setAge(30);
  22. stf.setSmoker(false);
  23. staffs.add(stf);
  24. stf.setName("周笔畅");
  25. stf.setAge(28);
  26. stf.setSmoker(false);
  27. staffs.add(stf);
  28. stf.setName("周星驰");
  29. stf.setAge(40);
  30. stf.setSmoker(true);
  31. staffs.add(stf);
  32. Department dept = new Department();
  33. dept.setName("娱乐圈");
  34. dept.setStaffs(staffs);
  35. return dept;
  36. }
  37. }

控制台打印信息:

[plain] view plain copy

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <department name="娱乐圈">
  3. <staff smoker="true">
  4. <age>40</age>
  5. <name>周星驰</name>
  6. </staff>
  7. <staff smoker="true">
  8. <age>40</age>
  9. <name>周星驰</name>
  10. </staff>
  11. <staff smoker="true">
  12. <age>40</age>
  13. <name>周星驰</name>
  14. </staff>
  15. </department>

注意到,我们可以用Marshaller.marshal方法将对象转换成xml文件,也可以用UnMarshaller.unmarshal将xml转换成对象。

时间: 2024-10-06 00:31:37

Java对象和XML转换的相关文章

使用XStream注解实现Java对象与XML互相转换的代码示例

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>

使用JAXB实现JAVA对象和XML字符串的互相转换实例

测试类: package com.yanek.test; import java.util.ArrayList; import java.util.List; import com.yanek.test.JaxbUtil.CollectionWrapper; public class Test { /** * @param args */ public static void main(String[] args) { //创建java对象 Hotel hotel=new Hotel(); ho

JAXB 实现java对象与xml之间互相转换

首先熟悉一下JAXB实现对象与xml互转时常用的一些注解使用: [email protected],用于类级别的注解,对应xml的跟元素.通过name属性定义这个根节点的名称. [email protected],定义映射这个类中的何种类型都需要映射到xml.(如果不存在@XmlAccessorType,默认使用XmlAccessType.PUBLIC_MEMBER注解) 参数:XmlAccessType.FIELD: java对象中的所有成员变量. XmlAccessType.PROPERTY

java对象和xml的转换

关于java转对象,还有别的方法,这里我就简单的介绍一下这个.当然在转对象的过程中,必须加注释. 1.将Java对象转换为XML public static <T> void ObjectToXml(T t,String FilePath)throws Exception { FileOutputStream out = new FileOutputStream(new File(FilePath)); JAXBContext context = JAXBContext.newInstance

JAVA对象和XML文档、原来他们之间还有这一出

最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xml格式的字符获得所需数据成了 解决问题的关键..在这之前,以为会有点难...做完之后,然并卵,也就那么一回事... LZ主要用的xStream类..这个类的完美地解决了XML文档和JAVA对象之间的转换.. 由于刚刚接触这个类...对于里面提供的很多功能还没细细挖掘..只是简单地实现了 我想要实现的

XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换

(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类. JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树

玩转Java对象和XML相互转换

最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由.但是项目中封装的代码总是很庞大,因为要考虑太多的东西,而对于此,我只能通过小的Demo来说明,其实在项目中用到很多插件,轻巧,灵便,封装很好使用,但这里我讲解的是JAXB(Java Architecture for XML Binding). JAXB(Java Architecture for

java socket报文通信(三)java对象和xml格式文件的相互转换

前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每次都去写字符串啊,这样的话肯定要疯.既然是面向对象的编程,肯定会有好的办法来解决这个问题.我们使用JAXBContext这个工具. package cn.com.egj.entity.shortcutTransfer.test; import java.io.BufferedReader; impo

java对象与xml相互转换 ---- xstream

XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用了. 由于XStream.jar依赖于xmlpull.jar 所以,需将这两个jar一同导入. 下载地址 : https://pan.baidu.com/s/1eSpZs3o#path=%252F%25E5%25B7%25A5%25E5%2585%25B7jar XStream对象相当Java对象和