<?xml version="1.0" encoding="UTF-8"?>
<c c1="0">
<d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/>
<d d1="101280601" d2="深圳" d3="shenzhen" d4="广东"/>
<d d1="101280701" d2="珠海" d3="zhuhai" d4="广东"/>
<d d1="101280702" d2="斗门" d3="doumen" d4="广东"/>
<d d1="101280703" d2="金湾" d3="jinwan" d4="广东"/>
<d d1="101280800" d2="佛山" d3="foshan" d4="广东"/>
<d d1="101280801" d2="顺德" d3="shunde" d4="广东"/>
<d d1="101280802" d2="三水" d3="sanshui" d4="广东"/>
</c>
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
/**
* @author gaowenfeng
* @package com.gwf.gwf.weather.basic.vo
* @describe 天气实体类与xml映射
* @date 2018/2/20
*/
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
// 以上为lombok注解,方便生成getter/setter方法
@XmlRootElement(name = "d") // 将类或枚举类型映射到XML元素,d对应的是每一行的标签 名<d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/>
@XmlAccessorType(XmlAccessType.FIELD) // 控制默认情况下字段还是Javabean属性序列化。
public class City {
@XmlAttribute(name = "d1") // 将JavaBean属性映射到XML属性。d1-d4对应的是<d d1="101280101" d2="广州" d3="guangzhou" d4="广东"/> 中的d1-d4
private String cityId;
@XmlAttribute(name = "d2")
private String cityName;
@XmlAttribute(name = "d3")
private String cityCode;
@XmlAttribute(name = "d4")
private String province;
}
import lombok.Data;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;
/**
* @author gaowenfeng
* @package com.gwf.gwf.weather.basic.vo
* @describe 城市列表结合
* @date 2018/2/21
*/
@Data
@XmlRootElement(name = "c")
@XmlAccessorType(XmlAccessType.FIELD)
public class CityList {
@XmlElement(name = "d")
private List<City> cityList;
}
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import java.io.Reader;
import java.io.StringReader;
/**
* @author gaowenfeng
* @package com.gwf.weather.util
* @describe Xml构建工具
* @date 2018/2/21
*/
public class XmlBuilter {
/**
* 将Xml字符串转化为java对象
* @param clazz
* @param xmlStr
* @param <T>
* @return
* @throws Exception
*/
public static <T> T xmlStrToObject(Class<T> clazz,String xmlStr) throws Exception{
Object xmlObject = null;
// 创建Xml转化实例实例
JAXBContext context = JAXBContext.newInstance(clazz);
// XML转化为对象的接口
Unmarshaller unmarshaller = context.createUnmarshaller();
try(
// 将字符串转换为Reader
Reader reader = new StringReader(xmlStr)
){
// 执行具体的转换逻辑
xmlObject = unmarshaller.unmarshal(reader);
}
return (T)xmlObject;
}
}