java中xml反序列化,绑定到实体上

实体类

@XStreamAlias("ROOT")
public class VehiclePassInfo {
    @Id
    @GeneratedValue(generator = "JDBC")
    private Integer id;
    @XStreamAlias("LICENSEKEY")
    private String licensekey;
    @XStreamAlias("KKBH")
    private String interceptId;
    @XStreamAlias("JGSK")
    private String passTime;
    @XStreamAlias("CDBH")
    private String laneId;
    @XStreamAlias("HPHM")
    private String licensePlateNumber;
    @XStreamAlias("HPYS")
    private String licensePlateColour;
    @XStreamAlias("CPTP")
    private String licensePlatePic;

    public void setId(Integer id) {
        this.id = id;
    }

    public void setLicensekey(String licensekey) {
        this.licensekey = licensekey;
    }

    public void setInterceptId(String interceptId) {
        this.interceptId = interceptId;
    }

    public void setPassTime(String passTime) {
        this.passTime = passTime;
    }

    public void setLaneId(String laneId) {
        this.laneId = laneId;
    }

    public void setLicensePlateNumber(String licensePlateNumber) {
        this.licensePlateNumber = licensePlateNumber;
    }

    public void setLicensePlateColour(String licensePlateColour) {
        this.licensePlateColour = licensePlateColour;
    }

    public void setLicensePlatePic(String licensePlatePic) {
        this.licensePlatePic = licensePlatePic;
    }

    public String toString() {
        return "VehiclePassInfo(id=" + getId() + ", licensekey=" +
        getLicensekey() + ", interceptId=" + getInterceptId() + ", passTime=" +
        getPassTime() + ", laneId=" + getLaneId() + ", licensePlateNumber=" +
        getLicensePlateNumber() + ", licensePlateColour=" +
        getLicensePlateColour() + ", licensePlatePic=" + getLicensePlatePic() +
        ")";
    }

    public Integer getId() {
        return this.id;
    }

    public String getLicensekey() {
        return this.licensekey;
    }

    public String getInterceptId() {
        return this.interceptId;
    }

    public String getPassTime() {
        return this.passTime;
    }

    public String getLaneId() {
        return this.laneId;
    }

    public String getLicensePlateNumber() {
        return this.licensePlateNumber;
    }

    public String getLicensePlateColour() {
        return this.licensePlateColour;
    }

    public String getLicensePlatePic() {
        return this.licensePlatePic;
    }
}
import com.xxx.VehiclePassInfo;
import com.netmarch.dataacces.util.XmlUtil;

import com.thoughtworks.xstream.XStream;

import javax.validation.constraints.NotNull;

public class XmlUtil {
    public static XStream xStreamTo = new XStream();
    public static XStream xStreamFrom = new XStream();

    static {
        xStreamTo.autodetectAnnotations(true);
    }

    public static String toXml(@NotNull
    Object bean) {
        try {
            String top = "<?xml version=‘1.0‘ encoding=‘UTF-8‘?>\n";

            return top + xStreamTo.toXML(bean);
        } catch (Exception e) {
            e.printStackTrace();

            return null;
        }
    }

    public static <T> T fromXml(@NotNull
    String xml, @NotNull
    Class<T> clzz) {
        try {
            xStreamFrom.processAnnotations(clzz);
            xStreamFrom.setClassLoader(clzz.getClassLoader());
            xStreamFrom.allowTypes(new Class[] { clzz });

            return (T) xStreamFrom.fromXML(xml);
        } catch (Exception e) {
            e.printStackTrace();

            return null;
        }
    }

    public static void main(String[] args) {
        VehiclePassInfo vehiclePassInfo = (VehiclePassInfo) fromXml("<ROOT>\n                    <LICENSEKEY>5</LICENSEKEY>\n                    <KKBH>5</KKBH>\n                    <JGSK>xxxx</JGSK>\n                    <CDBH>3</CDBH>\n                    <HPHM>XY0001</HPHM>\n                    <HPYS>2</HPYS>\n                    <CPTP>xxxxx</CPTP>\n                </ROOT>",
                VehiclePassInfo.class);

        System.out.println(vehiclePassInfo.toString());
    }
}

maven依赖:

<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.9</version>
</dependency>

原文地址:https://www.cnblogs.com/passedbylove/p/12436061.html

时间: 2024-08-01 00:13:59

java中xml反序列化,绑定到实体上的相关文章

第70节:Java中xml和tomcat

前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that every driver class must implement. The Java SQL framework allows for multiple database drivers. Each driver should supply a class that implements the Driver interface. The Dr

线程基础:线程(2)——JAVA中的基本线程操作(上)

文章注明来源:http://blog.csdn.net/yinwenjie,主要供自己学习转载用 1.JAVA中线程的状态 1-1.#对象锁 在Java中每一个对象都有一把‘锁’,这个‘锁’可以是开放状态:也可以由某一个线程(或者多个线程)持有‘钥匙’:一旦在系统中某个对象的‘锁’存在至少一把‘钥匙’,那么任何线程操作这个对象,都必须验证是否有‘钥匙’,如果没有则会报IllegalMonitorStateException异常. 可是‘锁芯’(对象独占权)只有一个,那么可以打开这把锁的多个‘钥匙

关于JAVA中的前期绑定 后期绑定(动态绑定)

前期绑定,在程序执行前根据编译时类型绑定,调用开销较小,如C语言只有前期绑定这种方法调用. 后期绑定,是指在运行时根据对象的类型进行绑定,又叫动态绑定或运行时绑定.实现后期绑定,需要某种机制支持,以便在运行时能判断对象的类型,调用开销比前期绑定大. Java中的static方法和final方法(private属于final方法,详细的解释见<Java编程思想>)属于前期绑定,子类无法重写final方法,成员变量(包括静态及非静态)也属于前期绑定.除了static方法和final方法(priva

Java中的时间和日期(上)

自从JDK 1.0开始,Java就提供了Date来处理时间和日期,作为老古董自然有很多东西是过时的.然后出现了Calendar来解决了很多问题,但是Calendar使用比较复杂,并且有些反人类的地方.直到Java 8的出现,它吸收了Joda-Time库的经验,使得Java处理时间和日期变得比较"人性化"了.本篇就来谈谈Java中的Date.Calendar,以及SimpleDateFormat的使用.下一篇再对比一下Java 8中的日期处理. 古老的Date 查看一下Date类的源码,

java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = DocumentHelper.parseText(xmlStr); // XML转字符串 Document document = ...; String text = document.asXML(); //这里的XML DOCUMENT为org.dom4j.Document 二.读取XML文档节点: pack

XML解析——Java中XML的四种解析方式

 XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四种:1.DOM解析:2.SAX解析:3.JDOM解析:4.DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台. 针对以下XML文件,会对四种方式进行详细描述: 1 <?xml version="1.

黑马程序员——XML解析---java中XML的四种解析方式

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四种:1.DOM解析:2.SAX解析:3.JDOM解析:4.DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于jav

Java中使用jcraft进行SFTP的上传下载

如果大家熟悉Linux的话,一定对ssh,sftp,scp等命令非常熟悉.ssh是一个安全协议,用来在不同系统或者服务 器之间进行安全连接.ssh 在连接和传送的过程中会加密所有的数据.具体的解释,大家可以参考百度百科的文 档.地址为:http://baike.baidu.com/view/16184.htm 但是SSH一般是基于客户端的或者Linux命令行的.比如客户端的工具:OpenSSH,putty,SSH Tectia:在linux上大家可以通过ssh [email protected]

Java中Xml解析(四种方法)

1.DOM,Document Object Model,基于DOM的XML分析器将XML文档转换成一个对象模型的集合(DOC树),通过对此模型操作实现对XML文档数据的操作,可以在任何时候对XML文档的任何一部分数据进行访问. DOC强制使用树模型来访问XML文档中信息 很灵活,当XML文档较大时对内存需求比较高,而且对结构复杂的DOC树的遍历也很耗时,对机器要求比较高. // step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器) DocumentBuilderFactory