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

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);

}

}


版权声明:本文为u012402926原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。