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

来源:互联网 发布:通达信网上交易软件 编辑:程序博客网 时间:2024/05/22 20:12
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;}@Overridepublic 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 blocke.printStackTrace();}



原创粉丝点击