• javaben转xml


    javaben转xml

    pos:

    @Data
    public class Pos {
    
        @JSONField(name = "Source")
        private Source source;
    
        @Data
        public static class Source{
    
            @JSONField(name = "ISOCountry")
            private String isoCountry = "CN";
    
            @JSONField(name = "ISOCurrency")
            private String isoCurrency = "CNY";
    
            @JSONField(name = "PseudoCityCode")
            private String pseudoCityCode = "3P";
    
            @JSONField(name = "Channel")
            private String channel = "B2B";
    
            @JSONField(name = "RequestorID")
            private RequestorID requestorID;
    
            @Data
            public static class RequestorID{
    
                @JSONField(name = "ID")
                private String id = "密码";
    
                @JSONField(name = "CompanyName")
                private CompanyName companyName;
    
                @Data
                public static class CompanyName{
                    @JSONField(name = "Code")
                    private String code="xx公司";
    
                    @JSONField(name = "CompanyShortName")
                    private String companyShortName="SD";
                }
            }
        }
    
        public static Pos ofDefault() {
            Pos pos = new Pos();
            Source source = new Source();
            Source.RequestorID requestorID = new Source.RequestorID();
            Source.RequestorID.CompanyName companyName = new Source.RequestorID.CompanyName();
    
            requestorID.setCompanyName(companyName);
            source.setRequestorID(requestorID);
            pos.setSource(source);
    
            return pos;
        }
    
    }
    

      

    AirLowFareSearchRQ:

    @Data
    @XmlAccessorType(XmlAccessType.FIELD)
    @XmlRootElement
    @XmlType(name = "OTA_AirLowFareSearchRQ", propOrder = {})
    public class AirLowFareSearchRQ {
    
        @JSONField(name = "POS")
        @XmlElement
        protected Pos pos ;
    
        @JSONField(name = "OriginDestinationInformation")
        @XmlElement
        protected OriginDestinationInformation originDestinationInformation;
    
        @JSONField(name = "SpecificFlightInfo")
        @XmlElement
        protected SpecificFlightInfo specificFlightInfo ;
    
        @JSONField(name = "TravelPreferences")
        @XmlElement
        protected TravelPreferences travelPreferences;
    
        @JSONField(name = "TravelerInfoSummary")
        @XmlElement
        protected TravelerInfoSummary travelerInfoSummary ;
    
        @JSONField(name = "xmlns")
        @XmlAttribute
        protected String xmlns;
    
        @JSONField(name = "MaxResponses")
        @XmlAttribute
        protected String maxResponses;
    
        @JSONField(name = "TransactionIdentifier")
        @XmlAttribute
        protected String transactionIdentifier;
    
        @JSONField(name = "Version")
        @XmlAttribute
        protected String version;
    
      
        @JSONField(name = "PrimaryLangID")
        @XmlAttribute
        protected String primaryLangID;
    
        @Data
        public static class OriginDestinationInformation{
            @JSONField(name = "DepartureDateTime")
            private String departureDateTime;
    
            @JSONField(name = "OriginLocation")
            private Location originLocation;
    
            @JSONField(name = "DestinationLocation")
            private Location destinationLocation;
    
            @Data
            public static class Location{
                @JSONField(name = "CodeContext")
                private String codeContext;
    
                @JSONField(name = "LocationCode")
                private String locationCode;
            }
        }
    
        @Data
        public static class SpecificFlightInfo{
            @JSONField(name = "BookingClassPref")
            private BookingClassPref bookingClassPref = new BookingClassPref();
    
            @Data
            public static class BookingClassPref{
                @JSONField(name = "ResBookDesigCode")
                private String besBookDesigCode;
            }
        }
    
        @Data
        public static class TravelPreferences{
            @JSONField(name = "ETicketDesired")
            private String eTicketDesired;
        }
    
        @Data
        public static class TravelerInfoSummary{
            @JSONField(name = "AirTravelerAvail")
            private AirTravelerAvail airTravelerAvail;
    
            @Data
            public static class AirTravelerAvail{
    
                @JSONField(name = "PassengerTypeQuantity")
                private List<PassengerTypeQuantity> passengerTypeQuantity;
    
                @Data
                public static class PassengerTypeQuantity{
                    @JSONField(name = "Code")
                    private String code;
    
                    @JSONField(name = "Quantity")
                    private String quantity;
    
                }
            }
        }
    
        public static AirLowFareSearchRQ ofDefault() {
            AirLowFareSearchRQ airLowFareSearchRQ = new AirLowFareSearchRQ();
            airLowFareSearchRQ.setXmlns("http://www.opentravel.org/OTA/2003/05");
            airLowFareSearchRQ.setMaxResponses("30");
            airLowFareSearchRQ.setTransactionIdentifier("0");
            airLowFareSearchRQ.setVersion("2.005");
            //
            OriginDestinationInformation information = new OriginDestinationInformation();
            information.setDestinationLocation(new OriginDestinationInformation.Location());
            information.setOriginLocation(new OriginDestinationInformation.Location());
            airLowFareSearchRQ.setOriginDestinationInformation(information);
    
            //
            SpecificFlightInfo specificFlightInfo = new SpecificFlightInfo();
            SpecificFlightInfo.BookingClassPref pref = new SpecificFlightInfo.BookingClassPref();
            pref.setBesBookDesigCode("Y");
            specificFlightInfo.setBookingClassPref(pref);
            airLowFareSearchRQ.setSpecificFlightInfo(specificFlightInfo);
    
            //
            TravelPreferences preferences = new TravelPreferences();
            preferences.setETicketDesired("true");
            airLowFareSearchRQ.setTravelPreferences(preferences);
    
            //pos
            airLowFareSearchRQ.setPos(Pos.ofDefault());
    
    
            return airLowFareSearchRQ;
        }
    }
    

      

    utils工具类
    import javax.xml.bind.JAXBContext;
    import javax.xml.bind.JAXBException;
    import javax.xml.bind.Marshaller;
    import javax.xml.bind.Unmarshaller;
    import java.io.StringReader;
    import java.io.StringWriter;
    
    /**
     * @date: 2018/04/13
     * @author: wangcd
     * @version: 1.0.0
     * @description:Jaxb2工具类.
     **/
    public class JaxbUtil {
    
    
    
        /**
         * 以UTF-8编码的格式将JavaBean转成XML
         * @param o
         * @return
         */
        public static String convertToXml(Object o){
            return convertToXml(o,"UTF-8");
        }
    
        /**
         * 将JavaBean转成XML
         * @param obj       JavaBean对象
         * @param encoding  xml编码格式,例,"UTF-8"
         * @return
         */
        public static String convertToXml(Object obj,String encoding){
            String result = "";
            try {
                JAXBContext context = JAXBContext.newInstance(obj.getClass());
                Marshaller marshaller = context.createMarshaller();
                marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
                marshaller.setProperty(Marshaller.JAXB_ENCODING, encoding);
    
                StringWriter writer = new StringWriter();
                marshaller.marshal(obj, writer);
                result = writer.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return result;
        }
    
        /**
         * 将XML转成JavaBean
         * @param xml       xml字符串
         * @param cls       JavaBean的class名称 例,Object.class
         * @param <T>
         * @return          返回转换后的JavaBean
         */
        public static <T> T convertToJavaBean(String xml,Class<T> cls){
            T t = null;
            try {
                JAXBContext jaxbContext = JAXBContext.newInstance(cls);
                Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
                t = (T) unmarshaller.unmarshal(new StringReader(xml));
            } catch (JAXBException e) {
                e.printStackTrace();
            }
            return t;
        }
    }
    

      

    测试:
    @Test
    	void contextLoads() {
    
    
            AirLowFareSearchRQ searchRQ = AirLowFareSearchRQ.ofDefault();
            searchRQ.setPrimaryLangID("zh");
    
            searchRQ.getOriginDestinationInformation().setDepartureDateTime("2020-10-10");
            searchRQ.getOriginDestinationInformation().getOriginLocation().setCodeContext("IATA");
            searchRQ.getOriginDestinationInformation().getOriginLocation().setLocationCode("TNA");
            searchRQ.getOriginDestinationInformation().getDestinationLocation().setLocationCode("IATA");
            searchRQ.getOriginDestinationInformation().getDestinationLocation().setLocationCode("XMN");
    
            AirLowFareSearchRQ.TravelerInfoSummary travelerInfoSummary = new AirLowFareSearchRQ.TravelerInfoSummary();
            AirLowFareSearchRQ.TravelerInfoSummary.AirTravelerAvail airTravelerAvail = new AirLowFareSearchRQ.TravelerInfoSummary.AirTravelerAvail();
            List<AirLowFareSearchRQ.TravelerInfoSummary.AirTravelerAvail.PassengerTypeQuantity> passengerTypeQuantityList = new ArrayList<>();
            AirLowFareSearchRQ.TravelerInfoSummary.AirTravelerAvail.PassengerTypeQuantity passengerTypeQuantity = new AirLowFareSearchRQ.TravelerInfoSummary.AirTravelerAvail.PassengerTypeQuantity();
            passengerTypeQuantity.setCode("ADT");
            passengerTypeQuantity.setQuantity("1");
            passengerTypeQuantityList.add(passengerTypeQuantity);
            airTravelerAvail.setPassengerTypeQuantity(passengerTypeQuantityList);
            travelerInfoSummary.setAirTravelerAvail(airTravelerAvail);
            searchRQ.setTravelerInfoSummary(travelerInfoSummary);
    
                String str = JaxbUtil.convertToXml(searchRQ);
                System.out.println(str);
        }
    

      


    测试结果:
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <airLowFareSearchRQ xmlns="http://www.opentravel.org/OTA/2003/05" maxResponses="30" transactionIdentifier="0" version="2.005" primaryLangID="zh">
        <pos>
            <source>
                <channel>B2B</channel>
                <isoCountry>CN</isoCountry>
                <isoCurrency>CNY</isoCurrency>
                <pseudoCityCode>3P</pseudoCityCode>
                <requestorID>
                    <companyName>
                        <code>xx公司</code>
                        <companyShortName>SD</companyShortName>
                    </companyName>
                    <id>密码</id>
                </requestorID>
            </source>
        </pos>
        <originDestinationInformation>
            <departureDateTime>2020-10-10</departureDateTime>
            <destinationLocation>
                <locationCode>XMN</locationCode>
            </destinationLocation>
            <originLocation>
                <codeContext>IATA</codeContext>
                <locationCode>TNA</locationCode>
            </originLocation>
        </originDestinationInformation>
        <specificFlightInfo>
            <bookingClassPref>
                <besBookDesigCode>Y</besBookDesigCode>
            </bookingClassPref>
        </specificFlightInfo>
        <travelPreferences>
            <ETicketDesired>true</ETicketDesired>
        </travelPreferences>
        <travelerInfoSummary>
            <airTravelerAvail>
                <passengerTypeQuantity>
                    <code>ADT</code>
                    <quantity>1</quantity>
                </passengerTypeQuantity>
            </airTravelerAvail>
        </travelerInfoSummary>
    </airLowFareSearchRQ>
    

      





  • 相关阅读:
    yii主题
    aptana studio 使用技巧整理
    big database url
    yii表单输入元素
    下载,和scp上传问题
    对缓存的思考——提高命中率
    php用户名密码
    openx -书表添加字段
    搜索
    python——常用模块2
  • 原文地址:https://www.cnblogs.com/achengmu/p/13546667.html
Copyright © 2020-2023  润新知