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

6 篇文章 0 订阅
3 篇文章 0 订阅
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<CityVO> 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<CityVO> getCityList() {
		return cityList;
	}

	public void setCityList(List<CityVO> 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)

<?xml version="1.0"?>
<address>
	<country>Chinese</country>
	<state>Hunan</state>
	<city>
		<name>Hengyang</name>
		<city-resident>
			<name>presley</name>
			<age>100</age>
			<job>developer</job>
		</city-resident>
		
		<city-resident>
			<name>kenny</name>
			<age>100</age>
			<job>developer</job>
		</city-resident>
	</city>
	
	<city>
		<name>Changsha</name>
		<city-resident>
			<name>PenZhi</name>
			<age>13</age>
			<job>student</job>
		</city-resident>
		
		<city-resident>
			<name>LiMM</name>
			<age>18</age>
			<job>student</job>
		</city-resident>
	</city>
</address>

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<CityVO> cityList = addressVO.getCityList();
			for(CityVO c : cityList) {
				outln(c);
			}
		} catch (JAXBException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值