【Java】Java object to XML

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>

  1. 创建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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值