jax 解析xml

1,xml对应javabean

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

@XmlAccessorType(XmlAccessType.FIELD)
//指定根节点
@XmlRootElement(name = "RTItem")
@XmlType(propOrder = {"isTicket", "isCancelled", "pnrNo", "rtOfficeItem", "rtNameItemList",
        "rtFlightSegemntItemList", "rtIdentifyItemList", "rtFCItemList", "rtFNItemList",
        "rtTnItemList","originalString","patItemList"})
public class RTItem {

    @XmlElement(name="IsTicket")
    private Boolean isTicket;

    @XmlElement(name="IsCancelled")
    private Boolean isCancelled;

    @XmlElement(name="PnrNo")
    private String pnrNo;

    @XmlElement(name="RtOfficeItem")
    private RtOfficeItem rtOfficeItem;

    @XmlElementWrapper(name = "RtNameItemList")
    @XmlElement(name="RTNameItem")
    private List<RTNameItem> rtNameItemList;

    @XmlElementWrapper(name = "RtFlightSegemntItemList")
    @XmlElement(name="RTFlightSegemntItem")
    private List<RTFlightSegemntItem> rtFlightSegemntItemList;

    @XmlElementWrapper(name = "RtIdentifyItemList")
    @XmlElement(name="RtIdentifyItem")
    private List<RtIdentifyItem> rtIdentifyItemList;

    @XmlElementWrapper(name = "RtFCItemList")
    @XmlElement(name="RtFCItem")
    private List<RtFCItem> rtFCItemList;

    @XmlElementWrapper(name = "RtFNItemList")
    @XmlElement(name="RtFNItem")
    private List<RtFNItem> rtFNItemList;

    @XmlElementWrapper(name = "RtTnItemList")
    @XmlElement(name="RtTnItem")
    private List<RtTnItem> rtTnItemList;

    @XmlElement(name="OriginalString")
    private String originalString;

    @XmlElementWrapper(name = "PatItemList")
    @XmlElement(name="RtTnItem")
    private List<RtTnItem> patItemList;


    public Boolean getTicket() {
        return isTicket;
    }

    public void setTicket(Boolean ticket) {
        isTicket = ticket;
    }

    public Boolean getCancelled() {
        return isCancelled;
    }

    public void setCancelled(Boolean cancelled) {
        isCancelled = cancelled;
    }

    public String getPnrNo() {
        return pnrNo;
    }

    public void setPnrNo(String pnrNo) {
        this.pnrNo = pnrNo;
    }

    public RtOfficeItem getRtOfficeItem() {
        return rtOfficeItem;
    }

    public void setRtOfficeItem(RtOfficeItem rtOfficeItem) {
        this.rtOfficeItem = rtOfficeItem;
    }

    public List<RTNameItem> getRtNameItemList() {
        return rtNameItemList;
    }

    public void setRtNameItemList(List<RTNameItem> rtNameItemList) {
        this.rtNameItemList = rtNameItemList;
    }

    public List<RTFlightSegemntItem> getRtFlightSegemntItemList() {
        return rtFlightSegemntItemList;
    }

    public void setRtFlightSegemntItemList(List<RTFlightSegemntItem> rtFlightSegemntItemList) {
        this.rtFlightSegemntItemList = rtFlightSegemntItemList;
    }

    public List<RtIdentifyItem> getRtIdentifyItemList() {
        return rtIdentifyItemList;
    }

    public void setRtIdentifyItemList(List<RtIdentifyItem> rtIdentifyItemList) {
        this.rtIdentifyItemList = rtIdentifyItemList;
    }

    public List<RtFCItem> getRtFCItemList() {
        return rtFCItemList;
    }

    public void setRtFCItemList(List<RtFCItem> rtFCItemList) {
        this.rtFCItemList = rtFCItemList;
    }

    public List<RtFNItem> getRtFNItemList() {
        return rtFNItemList;
    }

    public void setRtFNItemList(List<RtFNItem> rtFNItemList) {
        this.rtFNItemList = rtFNItemList;
    }

    public List<RtTnItem> getRtTnItemList() {
        return rtTnItemList;
    }

    public void setRtTnItemList(List<RtTnItem> rtTnItemList) {
        this.rtTnItemList = rtTnItemList;
    }

    public String getOriginalString() {
        return originalString;
    }

    public void setOriginalString(String originalString) {
        this.originalString = originalString;
    }

    public List<RtTnItem> getPatItemList() {
        return patItemList;
    }

    public void setPatItemList(List<RtTnItem> patItemList) {
        this.patItemList = patItemList;
    }

    
}

2,jax解析工具类

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

/**
*@Description Jaxb解析XML工具类
*@Date 2018/5/11 10:17
*/
public class JaxbUtil {

    /**
     * JavaBean转换成xml
     * 使用默认编码UTF-8
     * @param obj
     * @return
     */
    public static String convert2Xml(Object obj) {
        return convert2Xml(obj, "UTF-8");
    }

    /**
     * JavaBean转换成xml
     * @param obj javabean
     * @param encoding 编码格式
     * @return 返回xml文件的字符串,如果发生异常,将返回null!
     */
    public static String convert2Xml(Object obj, String encoding) {
        String result = null;
        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,调用该方法时,请将XML读取到String
     * @param xml 读取XML文件到String的String实例
     * @param c JavaBean's class
     * @return 返回目标类的实例,如果过程中有异常将返回null
     */
    @SuppressWarnings("unchecked")
    public static <T> T convert2JavaBean(String xml, Class<T> c) {
        T t = null;
        try {
            JAXBContext context = JAXBContext.newInstance(c);
            Unmarshaller unmarshaller = context.createUnmarshaller();
            t = (T) unmarshaller.unmarshal(new StringReader(xml));
        } catch (Exception e) {
            e.printStackTrace();
        }

        return t;
    }
}

猜你喜欢

转载自my.oschina.net/u/3574106/blog/1925504