JAXB主要用来实现对象和XML之间的序列化

来源:互联网 发布:linux安装squid 编辑:程序博客网 时间:2024/06/02 19:42

  JAXB主要用来实现对象和XML之间的序列化和反序列化,关于JAXB的介绍就不多说了,网上一搜一大把,这里主要总结下基本使用方法和一些注意事项

  首先定义两个示例类ClassA,ClassB,用于后续的示例演示

  复制代码

  package cn.lzrabbit;

  public class ClassA {

  private int classAId;

  private String classAName;

  private ClassB classB;

  public int getClassAId() {

  return classAId;

  }

  public void setClassAId(int classAId) {

  this.classAId = classAId;

  }

  public String getClassAName() {

  return classAName;

  }

  public void setClassAName(String classAName) {

  this.classAName = classAName;

  }

  public ClassB getClassB() {

  return classB;

  }

  public void setClassB(ClassB classB) {

  this.classB = classB;

  }

  }

  复制代码

  package cn.lzrabbit;

  public class ClassB {

  private int classBId;

  private String classBName;

  public int getClassBId() {

  return classBId;

  }

  public void setClassBId(int classBId) {

  this.classBId = classBId;

  }

  public String getClassBName() {

  return classBName;

  }

  public void setClassBName(String classBName) {

  this.classBName = classBName;

  }

  }

  复制代码

  用于序列化的XmlUtil

  package cn.lzrabbit;

  import java.io.StringReader;

  import java.io.StringWriter;

  import javax.xml.bind.*;

  public class XmlUtil {

  public static String toXML(Object obj) {

  try {

  JAXBContext context = JAXBContext.newInstance(obj.getClass());

  Marshaller marshaller = context.createMarshaller();

  marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");// //编码格式

  marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);// 是否格式化生成的xml串

  marshaller.setProperty(Marshaller.JAXB_FRAGMENT, false);// 是否省略xm头声明信息

  StringWriter writer = new StringWriter();

  marshaller.marshal(obj, writer);

  return writer.toString();

  } catch (Exception e) {

  throw new RuntimeException(e);

  }

  }

0 0
原创粉丝点击