首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

java对象与XML互相转变-jaxb

2012-10-30 
java对象与XML相互转变--jaxbimport java.io.FileReaderimport java.io.FileWriterimport java.io.IOExc

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;
?}
}

?

热点排行