Java object to XML
调别人接口,需要传xml格式数据,结构比较复杂
需要效果
<COUNTRY>
<COUNTRY_NAME>CHN</COUNTRY_NAME>
<LEVEL>SSS</LEVEL>
<PROVINCE_LIST>
<PROVINCE>
<PROVINCE_NAME>浙江</PROVINCE_NAME>
<PROVINCE_DESCRIPTION>WO SHI SHA BI</PROVINCE_DESCRIPTION>
<CITY_LIST>
<CITIES>
<CITY_NAME>HangZhou</CITY_NAME>
<CITY_DESCRIPTION>sb1</CITY_DESCRIPTION>
</CITIES>
...
...
...
<CITIES>
<CITY_NAME>WenZhou</CITY_NAME>
<CITY_DESCRIPTION>sb2</CITY_DESCRIPTION>
</CITIES>
</CITY_LIST>
</PROVINCE>
...
...
...
<PROVINCE>
<PROVINCE_NAME>广东</PROVINCE_NAME>
<PROVINCE_DESCRIPTION>WO SHI SHA BI</PROVINCE_DESCRIPTION>
<CITY_LIST>
<CITIES>
<CITY_NAME>ShenZhen</CITY_NAME>
<CITY_DESCRIPTION>sb3</CITY_DESCRIPTION>
</CITIES>
...
...
...
<CITIES>
<CITY_NAME>GuangZhou</CITY_NAME>
<CITY_DESCRIPTION>sb4</CITY_DESCRIPTION>
</CITIES>
</CITY_LIST>
</PROVINCE>
</PROVINCE_LIST>
</COUNTRY>
- 创建Javaobject构建数据结构 再转成XML String
依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.11.0</version>
第一层
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "COUNTRY")
public class Country {
@JacksonXmlProperty(localName = "COUNTRY_NAME")
private String countryName;
@JacksonXmlProperty(localName = "LEVEL")
private String level;
@JacksonXmlElementWrapper(localName = "PROVINCE_LIST")
@JacksonXmlProperty(localName = "PROVINCE")
private List<Province> provinceList;
}
第二层
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "PROVINCE")
public class Province {
@JacksonXmlProperty(localName = "PROVINCE_NAME")
private String provinceName;
@JacksonXmlProperty(localName = "PROVINCE_DESCRIPTION")
private String provinceDescription;
@JacksonXmlElementWrapper(localName = "CITY_LIST")
@JacksonXmlProperty(localName = "CITIES")
private List<City> cityList;
}
第三层
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@JacksonXmlRootElement(localName = "CITIES")
public class City {
@JacksonXmlProperty(localName = "CITY_NAME")
private String cityName;
@JacksonXmlProperty(localName = "CITY_DESCRIPTION")
private String cityDescription;
}
测试用例
public static void main(String[] args) {
jacksonTest();
}
private static void jacksonTest() {
// 最外层
Country country = new Country();
country.setCountryName("CHN");
country.setLevel("SSS");
// 省份list
List<Province> provinceList = new ArrayList<>();
Province zheJiang = new Province();
zheJiang.setProvinceName("浙江");
zheJiang.setProvinceDescription("WO SHI SHA BI");
// 城市list
List<City> zheJiangCityList = new ArrayList<>();
City hangZhou = new City();
hangZhou.setCityName("HangZhou");
hangZhou.setCityDescription("sb1");
zheJiangCityList.add(hangZhou);
City wenZhou = new City();
wenZhou.setCityName("WenZhou");
wenZhou.setCityDescription("sb2");
zheJiangCityList.add(wenZhou);
zheJiang.setCityList(zheJiangCityList);
provinceList.add(zheJiang);
// -------------------------------
Province guangDong = new Province();
guangDong.setProvinceName("广东");
guangDong.setProvinceDescription("WO SHI SHA BI");
// 城市list
List<City> guangDongCityList = new ArrayList<>();
City shenZhen = new City();
shenZhen.setCityName("ShenZhen");
shenZhen.setCityDescription("sb3");
guangDongCityList.add(shenZhen);
City guangZhou = new City();
guangZhou.setCityName("GuangZhou");
guangZhou.setCityDescription("sb4");
guangDongCityList.add(guangZhou);
guangDong.setCityList(guangDongCityList);
provinceList.add(guangDong);
country.setProvinceList(provinceList);
// 转化成xml
try {
System.out.println(new XmlMapper().writeValueAsString(country));;
} catch (JsonProcessingException e) {
e.printStackTrace();
}
}
output
<COUNTRY><COUNTRY_NAME>CHN</COUNTRY_NAME><LEVEL>SSS</LEVEL><PROVINCE_LIST><PROVINCE><PROVINCE_NAME>浙江</PROVINCE_NAME><PROVINCE_DESCRIPTION>WO SHI SHA BI</PROVINCE_DESCRIPTION><CITY_LIST><CITIES><CITY_NAME>HangZhou</CITY_NAME><CITY_DESCRIPTION>sb1</CITY_DESCRIPTION></CITIES><CITIES><CITY_NAME>WenZhou</CITY_NAME><CITY_DESCRIPTION>sb2</CITY_DESCRIPTION></CITIES></CITY_LIST></PROVINCE><PROVINCE><PROVINCE_NAME>广东</PROVINCE_NAME><PROVINCE_DESCRIPTION>WO SHI SHA BI</PROVINCE_DESCRIPTION><CITY_LIST><CITIES><CITY_NAME>ShenZhen</CITY_NAME><CITY_DESCRIPTION>sb3</CITY_DESCRIPTION></CITIES><CITIES><CITY_NAME>GuangZhou</CITY_NAME><CITY_DESCRIPTION>sb4</CITY_DESCRIPTION></CITIES></CITY_LIST></PROVINCE></PROVINCE_LIST></COUNTRY>