xml与java对象的快速互转

做流程图的项目时,新的流程定义为xml的,需要对xml与java对象进行互转
查了一下activiti的转换xml方式,发现转换太麻烦了,需要一步步的解析xml
后面发现直接用jaxb就可以很快实现互转,而且现在这个jaxb在jdk内,不需要引入外部的解析xml的包
具体如下:
一.根据XML构建java对象

@XmlRootElement(name = "mxGraphModel")
public class MxGraphModel {
    
    private MxRoot root;
    @XmlElement(name = "root")
    public MxRoot getRoot() {
        return root;
    }

    public void setRoot(MxRoot root) {
        this.root = root;
    }

}

该java对象直接使用注解就可以声明,其他相关注解如下:
1.@XmlRootElement,用于类级别的注解,对应xml的跟元素。通过name属性定义这个根节点的名称。
2.@XmlAccessorType,定义映射这个类中的何种类型都需要映射到xml。(如果不存在@XmlAccessorType,默认使用XmlAccessType.PUBLIC_MEMBER注解)
  参数:XmlAccessType.FIELD: java对象中的所有成员变量。
  XmlAccessType.PROPERTY:java对象中所有通过getter/setter方式访问的成员变量。
  XmlAccessType.PUBLIC_MEMBER:java对象中所有的public访问权限的成员变量和通过getter/setter方式访问的成员变量。
  XmlAccessType.NONE: java对象的所有属性都不映射为xml的元素。
3.@XmlAttribute,用于把java对象的属性映射为xml的属性,并可通过name属性为生成的xml属性指定别名。

4.@XmlElement,指定一个字段或get/set方法映射到xml的节点。通过name属性定义这个根节点的名称。

5.@XmlElementWrapper,为数组或集合定义一个父节点。通过name属性定义这个父节点的名称。

二。执行java及xml的互转

/**
     * xml转对象
     * 
     * @param xml
     * @return
     * @throws JAXBException
     */
    public MxGraphModel convertToGraphModel(String xml) throws JAXBException {
        StringReader reader = new StringReader(xml);
        JAXBContext jaxbContext = JAXBContext.newInstance(MxGraphModel.class);
        Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
        MxGraphModel graphModel = (MxGraphModel) jaxbUnmarshaller.unmarshal(reader);
        return graphModel;
    }

/**
     * 将对象转为流程XML
     * 
     * @param graphModel
     * @return
     * @throws JAXBException
     */
    public String convertToXML(MxGraphModel graphModel) throws JAXBException {
        JAXBContext jaxbContext = JAXBContext.newInstance(MxGraphModel.class);
        StringWriter writer = new StringWriter();
        Marshaller marshaller = jaxbContext.createMarshaller();
        marshaller.marshal(graphModel, writer);
        String xmlStr = writer.toString();
        xmlStr = StringUtils.replace(xmlStr, """, "'");
        return xmlStr;
    }

上述该方法转换简单,易明白,但唯一不足时,对XML的解析依赖整个对象,不能动态增加XML的解析,不过现阶段来说,这个办法已经足够了!

优秀的个人博客,低调大师

微信关注我们

原文链接:https://yq.aliyun.com/articles/665483

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Apache Tomcat7、8、9(Java Web服务器)

Apache Tomcat7、8、9(Java Web服务器)

Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。