import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name="Person")
public class Person {
private String name;
private String sex;
private int age;
@XmlElement(name="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlAttribute(name="sex")
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@XmlElement(name="age")
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
测试类:
public class Test4 {
public static void main(String[] args) throws Exception{
XmlChangeUtil<Person> util=new XmlChangeUtil<Person>();
Person person=new Person();
person.setAge(18);
person.setName("zhaonan");
person.setSex("女");
String objectToXml = util.objectToXml(person);
System.out.println(objectToXml);
}
}
工具类:
public class XmlChangeUtil<T> {
/**
*将对象转换为xml
* @param className
* @return
* @throws Exception
*/
public String objectToXml(T className) throws Exception {
try {
JAXBContext context = JAXBContext.newInstance(className.getClass());
Marshaller mar = context.createMarshaller();
mar.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
mar.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
StringWriter writer = new StringWriter();
mar.marshal(className, writer);
return writer.toString();
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}
/**
* 将xml转换为对象
* @param className
* @param xml
* @return
* @throws Exception
*/
@SuppressWarnings({ "unchecked"})
public T xmlToObject(T className, String xml) throws Exception {
try {
JAXBContext jc = JAXBContext.newInstance(className.getClass());
Unmarshaller u = jc.createUnmarshaller();
StringReader reader=new StringReader(xml);
return (T)u.unmarshal(reader);
} catch (Exception e) {
e.printStackTrace();
throw new Exception();
}
}
}
生成的xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Person sex="女">
<age>18</age>
<name>zhaonan</name>
</Person>