Xml 转实体类对象

Xml 转实体类对象

步骤:

1. 读取Xml 数据转换成一个json数据;

2. 把json数据转成实体类对象;

maven依赖:


	dom4j
	dom4j
	1.6.1


	commons-io
	commons-io
	2.6


	com.alibaba
	fastjson
	1.2.23

工具类:

package com.liantuo.international.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.liantuo.international.domain.Response;
import org.dom4j.*;
import java.util.List;
import static org.springframework.util.StringUtils.isEmpty;


/**
 * @author
 * @Description
 * @date 2019/8/20
 */
public class Xml2JsonUtil {

    /**
     * xml转json
     * @param element
     * @param json
     */
    public static void dom4j2Json(Element element,JSONObject json){
        //如果是属性
        for(Object o:element.attributes()){
            Attribute attr=(Attribute)o;
            if(!isEmpty(attr.getValue())){
                json.put("@"+attr.getName(), attr.getValue());
            }
        }
        List chdEl=element.elements();
        //如果没有子元素,只有一个值
        if(chdEl.isEmpty()&&!isEmpty(element.getText())){
            json.put(element.getName(), element.getText());
        }

        //有子元素
        for(Element e:chdEl){
            //子元素也有子元素
            if(!e.elements().isEmpty()){
                JSONObject chdjson=new JSONObject();
                dom4j2Json(e,chdjson);
                Object o=json.get(e.getName());
                if(o!=null){
                    JSONArray jsona=null;
                    //如果此元素已存在,则转为jsonArray
                    if(o instanceof JSONObject){
                        JSONObject jsono=(JSONObject)o;
                        json.remove(e.getName());
                        jsona=new JSONArray();
                        jsona.add(jsono);
                        jsona.add(chdjson);
                    }
                    if(o instanceof JSONArray){
                        jsona=(JSONArray)o;
                        jsona.add(chdjson);
                    }
                    json.put(e.getName(), jsona);
                }else{
                    if(!chdjson.isEmpty()){
                        json.put(e.getName(), chdjson);
                    }
                }


            }else{
                //子元素没有子元素
                for(Object o:element.attributes()){
                    Attribute attr=(Attribute)o;
                    if(!isEmpty(attr.getValue())){
                        json.put("@"+attr.getName(), attr.getValue());
                    }
                }
                if(!e.getText().isEmpty()){
                    json.put(e.getName(), e.getText());
                }
            }
        }
    }

 }

实体类:

Xml 转实体类对象_第1张图片

H3ads实体类:

package com.liantuo.international.domain;


/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */


public class H3ads {
    private String h3ad;


    public H3ads() {
    }

    public H3ads(String h3ad) {
        this.h3ad = h3ad;
    }

    public void setH3ad(String h3ad) {
        this.h3ad = h3ad;
    }
    public String getH3ad() {
        return h3ad;
    }

}

OTA_AVE_RS实体类:

package com.liantuo.international.domain;


/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

public class OTA_AVE_RS {

    private Response Response;

    public Response getResponse() {
        return Response;
    }

    public void setResponse(Response response) {
        Response = response;
    }
}

Out1实体类:

package com.liantuo.international.domain;

import com.alibaba.fastjson.annotation.JSONField;

/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

public class Out1 {

    @JSONField(format = "yyyy-MM-dd")
    private String dt;
    private String week;
    private String dep;
    private String arr;
    private String depcity;
    private String arrcity;
    private String filter;
    private Segs segs;
    private H3ads h3ads;

    public Out1() {
    }

    public Out1(String dt, String week, String dep, String arr, String depcity, String arrcity, String filter, Segs segs, H3ads h3ads) {
        this.dt = dt;
        this.week = week;
        this.dep = dep;
        this.arr = arr;
        this.depcity = depcity;
        this.arrcity = arrcity;
        this.filter = filter;
        this.segs = segs;
        this.h3ads = h3ads;
    }

    public String getDt() {
        return dt;
    }

    public void setDt(String dt) {
        this.dt = dt;
    }

    public String getWeek() {
        return week;
    }

    public void setWeek(String week) {
        this.week = week;
    }

    public String getDep() {
        return dep;
    }

    public void setDep(String dep) {
        this.dep = dep;
    }

    public String getArr() {
        return arr;
    }

    public void setArr(String arr) {
        this.arr = arr;
    }

    public String getDepcity() {
        return depcity;
    }

    public void setDepcity(String depcity) {
        this.depcity = depcity;
    }

    public String getArrcity() {
        return arrcity;
    }

    public void setArrcity(String arrcity) {
        this.arrcity = arrcity;
    }

    public String getFilter() {
        return filter;
    }

    public void setFilter(String filter) {
        this.filter = filter;
    }

    public Segs getSegs() {
        return segs;
    }

    public void setSegs(Segs segs) {
        this.segs = segs;
    }

    public H3ads getH3ads() {
        return h3ads;
    }

    public void setH3ads(H3ads h3ads) {
        this.h3ads = h3ads;
    }
}

Response实体类:

package com.liantuo.international.domain;



/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

public class Response {

    private String ID;
    private String StName;
    private String SN;
    private String Flag;
    private Out1 out1;
    public Response() {
    }

    public Response(String ID, String stName, String SN, String flag, Out1 out1) {
        this.ID = ID;
        StName = stName;
        this.SN = SN;
        Flag = flag;
        this.out1 = out1;
    }

    public String getID() {
        return ID;
    }

    public void setID(String ID) {
        this.ID = ID;
    }

    public String getStName() {
        return StName;
    }

    public void setStName(String stName) {
        StName = stName;
    }

    public String getSN() {
        return SN;
    }

    public void setSN(String SN) {
        this.SN = SN;
    }

    public String getFlag() {
        return Flag;
    }

    public void setFlag(String flag) {
        Flag = flag;
    }

    public Out1 getOut1() {
        return out1;
    }

    public void setOut1(Out1 out1) {
        this.out1 = out1;
    }
}

SeatAndNum实体类:

package com.liantuo.international.domain;

/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */
public class SeatAndNum {


    private String name;
    private String av;

    public SeatAndNum() {
    }

    public SeatAndNum(String name, String av) {
        this.name = name;
        this.av = av;
    }

    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
        return name;
    }

    public void setAv(String av) {
        this.av = av;
    }
    public String getAv() {
        return av;
    }

}

SeatAndNums实体类:

package com.liantuo.international.domain;


import java.util.List;

/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */
public class SeatAndNums {


    private List seatAndNum;


    public SeatAndNums() {
    }

    public SeatAndNums(List seatAndNum) {
        this.seatAndNum = seatAndNum;
    }

    public List getSeatAndNum() {
        return seatAndNum;
    }

    public void setSeatAndNum(List seatAndNum) {
        this.seatAndNum = seatAndNum;
    }
}

Seg实体类:

package com.liantuo.international.domain;

import javax.xml.bind.annotation.XmlRootElement;
import java.util.Date;

/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

public class Seg {
    private String routno;
    private String subid;
    private String airline;
    private String fltno;
    private String dep;
    private String arr;
    private String dt;
    private String week;
    private String deptm;
    private String arrtm;
    private String dev;
    private String stop;
    private String ASR;
    private String meal;
    private String et;
    private String lnk;
    private Term term;
    private String flytm;
    private String journeytm;
    private SeatAndNums seatAndNums;

    public Seg() {
    }

    public Seg(String routno, String subid, String airline, String fltno, String dep, String arr, String dt, String week, String deptm, String arrtm, String dev, String stop, String ASR, String meal, String et, String lnk, Term term, String flytm, String journeytm, SeatAndNums seatAndNums) {
        this.routno = routno;
        this.subid = subid;
        this.airline = airline;
        this.fltno = fltno;
        this.dep = dep;
        this.arr = arr;
        this.dt = dt;
        this.week = week;
        this.deptm = deptm;
        this.arrtm = arrtm;
        this.dev = dev;
        this.stop = stop;
        this.ASR = ASR;
        this.meal = meal;
        this.et = et;
        this.lnk = lnk;
        this.term = term;
        this.flytm = flytm;
        this.journeytm = journeytm;
        this.seatAndNums = seatAndNums;
    }

    public String getRoutno() {
        return routno;
    }

    public void setRoutno(String routno) {
        this.routno = routno;
    }

    public String getSubid() {
        return subid;
    }

    public void setSubid(String subid) {
        this.subid = subid;
    }

    public String getAirline() {
        return airline;
    }

    public void setAirline(String airline) {
        this.airline = airline;
    }

    public String getFltno() {
        return fltno;
    }

    public void setFltno(String fltno) {
        this.fltno = fltno;
    }

    public String getDep() {
        return dep;
    }

    public void setDep(String dep) {
        this.dep = dep;
    }

    public String getArr() {
        return arr;
    }

    public void setArr(String arr) {
        this.arr = arr;
    }

    public String getDt() {
        return dt;
    }

    public void setDt(String dt) {
        this.dt = dt;
    }

    public String getWeek() {
        return week;
    }

    public void setWeek(String week) {
        this.week = week;
    }

    public String getDeptm() {
        return deptm;
    }

    public void setDeptm(String deptm) {
        this.deptm = deptm;
    }

    public String getArrtm() {
        return arrtm;
    }

    public void setArrtm(String arrtm) {
        this.arrtm = arrtm;
    }

    public String getDev() {
        return dev;
    }

    public void setDev(String dev) {
        this.dev = dev;
    }

    public String getStop() {
        return stop;
    }

    public void setStop(String stop) {
        this.stop = stop;
    }

    public String getASR() {
        return ASR;
    }

    public void setASR(String ASR) {
        this.ASR = ASR;
    }

    public String getMeal() {
        return meal;
    }

    public void setMeal(String meal) {
        this.meal = meal;
    }

    public String getEt() {
        return et;
    }

    public void setEt(String et) {
        this.et = et;
    }

    public String getLnk() {
        return lnk;
    }

    public void setLnk(String lnk) {
        this.lnk = lnk;
    }

    public Term getTerm() {
        return term;
    }

    public void setTerm(Term term) {
        this.term = term;
    }

    public String getFlytm() {
        return flytm;
    }

    public void setFlytm(String flytm) {
        this.flytm = flytm;
    }

    public String getJourneytm() {
        return journeytm;
    }

    public void setJourneytm(String journeytm) {
        this.journeytm = journeytm;
    }

    public SeatAndNums getSeatAndNums() {
        return seatAndNums;
    }

    public void setSeatAndNums(SeatAndNums seatAndNums) {
        this.seatAndNums = seatAndNums;
    }
}

Segs实体类:

package com.liantuo.international.domain;

import javax.xml.bind.annotation.XmlRootElement;
import java.util.List;

/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

public class Segs {


    private List seg;

    public Segs() {
    }

    public Segs(List seg) {
        this.seg = seg;
    }

    public void setSeg(List seg) {
        this.seg = seg;
    }
    public List getSeg() {
        return seg;
    }
}

Term实体类:

package com.liantuo.international.domain;


/**
 * @author lidada
 * @Description
 * @date 2019/8/20
 */

    public class Term {

        private String dep;
        private String arr;

    public Term(String dep, String arr) {
        this.dep = dep;
        this.arr = arr;
    }

    public Term() {
    }

    public void setDep(String dep) {
            this.dep = dep;
        }
        public String getDep() {
            return dep;
        }

        public void setArr(String arr) {
            this.arr = arr;
        }
        public String getArr() {
            return arr;
        }

    }


测试:

package com.liantuo.international.utils;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.liantuo.international.domain.Response;
import org.dom4j.*;
import java.util.List;

import static org.springframework.util.StringUtils.isEmpty;


/**
 * @author
 * @Description
 * @date 2019/8/20
 */
public class Xml2JsonDemo {


    public static void main(String[] args) throws DocumentException {
        String x = "C297818AV0S
10OCT19
THUBJSSHABJSSHAVIA MU DIRECT ONLY Y11MU5138PEKSHA
10OCT19
THU0700092033L0^BEDS#T2T22:202:20JACADAQAIAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
21MU5183PEKPVG
10OCT19
THU073509503210^SEDS#T2T12:152:15JAYABAMAEAHAKALANARAINFTFLIGHTOPEN8
31MU5102PEKSHA
10OCT19
THU080010153330^SEDS#T2T22:152:15JACADAQAIAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
41MU5156PEKSHA
10OCT19
THU0830104033L0^SEDS#T2T22:102:10JACADAQAIAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
51MU5104PEKSHA
10OCT19
THU0900111533L0^SEDS#T2T22:152:15JACADAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
61MU5106PEKSHA
10OCT19
THU1000121533L0^SEDS#T2T22:152:15JACADAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
71MU5108PEKSHA
10OCT19
THU1100132033L0^DEDS#T2T22:202:20JAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
81MU5152PEKSHA
10OCT19
THU1130140032L0^DEDS#T2T22:302:30JAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN6
91MU5110PEKSHA
10OCT19
THU120014203330^DEDS#T2T22:202:20JAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
101MU5112PEKSHA
10OCT19
THU130015157730^SEDS#T2T22:152:15JAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
111MU271PEKPVG
10OCT19
THU125515203210^SEDS#T2T12:252:25JAYABAINFTFLIGHTOPEN8
121*MU8560PEKSHA
10OCT19
THU130515307380^LE*DS#MF8178T2T22:252:25YA
131MU5154PEKSHA
10OCT19
THU133015407380^SEDS#T2T22:102:10YABAMAEAHAKALANARAINFTFLIGHTOPEN6
141MU5114PEKSHA
10OCT19
THU1400162033L0^SEDS#T2T22:202:20JAWAYABAINFTFLIGHTOPEN15
151MU5116PEKSHA
10OCT19
THU1500172033L0^SEDS#T2T22:202:20JAWAYABAINFTFLIGHTOPEN15
161MU5118PEKSHA
10OCT19
THU1600182033L0^SEDS#T2T22:202:20JAWAYABAHAINFTFLIGHTOPEN15
171MU5120PEKSHA
10OCT19
THU170019153330^DEDS#T2T22:152:15JAYABAINFTFLIGHTOPEN15
181MU563PEKPVG
10OCT19
THU1715193033L0^DEDS#T2T12:152:15JAWAYAINFTFLIGHTOPEN15
191MU5122PEKSHA
10OCT19
THU1800201533L0^DEDS#T2T12:152:15JAWAYABAINFTFLIGHTOPEN15
201*MU9108PEKSHA
10OCT19
THU1830205073L0^DE*DS#FM9108T2T22:202:20JAWAYABAHAINFTFLIGHTOPEN6
211MU5124PEKSHA
10OCT19
THU1900211533L0^SEDS#T2T22:152:15JAWAYABAINFTFLIGHTOPEN15
221MU5130PEKPVG
10OCT19
THU193522103230^SEDS#T2T12:352:35JAYABAHAINFTFLIGHTOPEN8
231MU5126PEKSHA
10OCT19
THU200022153330^SEDS#T2T22:152:15JAYABAHAINFTFLIGHTOPEN15
241*MU9102PEKSHA
10OCT19
THU2020225073E0^SE*DS#FM9102T2T22:302:30YABAHAINFTFLIGHTOPEN6
251MU5128PEKSHA
10OCT19
THU210523207730^EDS#T2T22:152:15FAJAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
261MU5158PEKSHA
10OCT19
THU213023457380^EDS#T2T22:152:15YABAMAEAHAKALANARAINFTFLIGHTOPEN6
271MU5160PEKSHA
10OCT19
THU2150235533L0^EDS#T2T22:052:05JAWAYABAMAEAHAKALANARAINFTFLIGHTOPEN15
281MU5390PEKSHA
10OCT19
THU131018103251^EDS#T2T25:005:00JAYABAMAEAHAKAINFTFLIGHTOPEN8
KiogIEhVIEZMSUdIVCBQTEVBU0UgQ0hFQ0sgSU4gNDUgTUlOVVRFUyBCRUZPUkUgREVQQVJUVVJFIEFUIFBFSw==KiogIFNDIEZMSUdIVCBQTEVBU0UgQ0hFQ0sgSU4gNDUgTUlOVVRFUyBCRUZPUkUgREVQQVJUVVJFIEFUIFBFSyBUMw==KiogIEFsbCBzY2hlZHVsZWQgTVUgb3IgRk0gZmxpZ2h0cyBvcGVyYXRlZCBieSBNVSBvciBGTQ==
"; //读取XML标签信息 Document doc= DocumentHelper.parseText(x); JSONObject json=new JSONObject(); //通过工具类把读取到的信息转成json数据 Xml2JsonUtil.dom4j2Json(doc.getRootElement(), json); System.out.println(json); String response = json.getString("Response"); //最后转换成实体类对象 Response response2 = JSONObject.parseObject(response, Response.class); System.out.println(response2); } }

执行结果:

Xml 转实体类对象_第2张图片

Xml 转实体类对象_第3张图片

你可能感兴趣的:(JSON)