java对象与XML相互转变--jaxb

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Calendar;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

public class JAXBTester {
 public static void main(String[] args) throws JAXBException, IOException {
  JAXBContext context = JAXBContext.newInstance(Person.class);
  //下面代码演示将对象转变为xml
  Marshaller m = context.createMarshaller();
  Address address = new Address("China", "Beijing", "Beijing", "ShangDi West", "100080");
  Person p = new Person(Calendar.getInstance(), "JAXB2", address, "SW");
  FileWriter fw = new FileWriter("person.xml");
  m.marshal(p, fw);
  //下面代码演示将上面生成的xml转换为对象
  FileReader fr = new FileReader("person.xml");
  Unmarshaller um = context.createUnmarshaller();
  Person p2 = (Person) um.unmarshal(fr);
  System.out.println("Country:" + p2.getAddress().getCountry());
 }
}

 

 

---------

 

 

import java.util.Calendar;

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
 

@XmlRootElement
//表示person是一个根元素
class Person {
 @XmlElement
 Calendar birthDay; //birthday将作为person的子元素
 @XmlAttribute
 String name; //name将作为person的的一个属性

 public Address getAddress() {
  return address;
 }

 @XmlElement
 Address address; //address将作为person的子元素
 @XmlElement
 String job; //job将作为person的子元素

 public Person() {
 }

 public Person(Calendar birthDay, String name, Address address, String job) {
  this.birthDay = birthDay;
  this.name = name;
  this.address = address;
  this.job = job;
 }
}

 

-------

 

import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;

class Address {
 @XmlAttribute
 String country;
 @XmlElement
 String state;
 @XmlElement
 String city;
 @XmlElement
 String street;
 String zipcode; //由于没有添加@XmlElement,所以该元素不会出现在输出的xml中

 public Address() {
 }

 public Address(String country, String state, String city, String street, String zipcode) {
  this.country = country;
  this.state = state;
  this.city = city;
  this.street = street;
  this.zipcode = zipcode;
 }

 public String getCountry() {
  return country;
 }
}

 

你可能感兴趣的:(java)