JAXB 初识(由XML转换为JavaBean) Unmarshaller 的使用

1. JAXB(Java Architecture for XML Binding简称JAXB)允许 Java开发人员将Java 类映射为 XML表示方式。JAXB提供两种主要特性:将一个Java 对象 序列化为XML,以及反向操作,将XML解析成Java对象。换句话说,JAXB允许以XML格式存储和读取数据,而不需要程序的类结构实现特定的读取XML和保存XML的代码。

2. 由XML解释为Java对象的步骤大致分为以下几步:

 1)创建可映射的Java对象

package com.desmond.test.jaxb;

import java.util.List;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlAccessorType(XmlAccessType.NONE)
@XmlRootElement(name = "address")
public class AddressVO {
	
	@XmlElement(name = "country")
	private String countryName;
	
	@XmlElement(name = "state")
	private String stateName;
	
	@XmlElement(name = "city")
	private List cityList;
	

	public String getCountryName() {
		return countryName;
	}

	public void setCountryName(String countryName) {
		this.countryName = countryName;
	}

	public String getStateName() {
		return stateName;
	}

	public void setStateName(String stateName) {
		this.stateName = stateName;
	}

	public List getCityList() {
		return cityList;
	}

	public void setCityList(List cityList) {
		this.cityList = cityList;
	}

	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder( "AddressVO [countryName=" + countryName + ", stateName="
				+ stateName + ", cityName=");
		for(CityVO city : cityList) {
			sb.append(city.getCityName() + ", ");
		}
		return sb.toString();
	}
	
}

2).创建符合XML语法规范的xml(address.xml)


Chinese Hunan Hengyang presley 100 developer kenny 100 developer Changsha PenZhi 13 student LiMM 18 student

3) 解析

URL url = AddressVO.class.getResource(DIR+"address.xml");
		File file = FileUtils.toFile(url);
		JAXBContext jc = null;
		AddressVO addressVO = null;
		
		try {
			jc = JAXBContext.newInstance(AddressVO.class);
			Unmarshaller unMarshaller = jc.createUnmarshaller();
			addressVO = (AddressVO) unMarshaller.unmarshal(file);
			List cityList = addressVO.getCityList();
			for(CityVO c : cityList) {
				outln(c);
			}
		} catch (JAXBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}



你可能感兴趣的:(XML,Jee,JAXB)