做流程图的项目时,新的流程定义为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://www.jianshu.com/p/a150a481c110

java对象转xml 高性能_xml与java对象的快速互转相关推荐

  1. java 序列化成xml文件_将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  2. java接口返回xml格式_xml格式接口数据编程实战

    系统对外提供接口,或者系统调用外部接口,常常会使用xml格式作为接口数据传输格式(json数据,txt文本数据亦可),下面讲讲xml数据的生成和解析. 首先讲讲xml数据生成,通常可以用两种方法,使用 ...

  3. java json转换xml格式_在Java中将JSON对象转换为XML格式?

    JSON是一种轻量级的数据交换格式,并且JSON的格式类似于键值对.我们可以使用org.json.XML类将JSONObject转换为XML格式,这提供了将XML文本转换为JSONObject并将JS ...

  4. Java JSON、XML文件/字符串与Bean对象互转解析

    前言      在做web或者其他项目中,JSON与XML格式的数据是大家经常会碰见的2种.在与各种平台做数据对接的时候,JSON与XML格式也是基本的数据传递格式,本文主要简单的介绍JSON/XML ...

  5. java文件和xml文件_用Java分割大型XML文件

    java文件和xml文件 上周,我被要求用Java编写一些东西,该东西能够将一个30GB的XML文件拆分为可配置文件大小的较小部分. 文件的使用者将是一个中间件应用程序,该应用程序在XML的大尺寸方面 ...

  6. java对象转xml 高性能_通过实例学习JAVA对象转成XML输出

    一.总体说明 XML和JSON 是最为常用的数据交换格式 本例子演示如何将java对象,转成XML输出. 二.流程 1.在上文的例子中,创建一个包"com.waylau.rest.bean& ...

  7. java 导出word xml格式_关于Java导出Word文件

    做个很多个项目里基本上都涉及了word.Excel导入导出,虽然其中的要求有些小差异,不过总的方向上变化不大,所以做一些总结: 一).利用freemarker,制作xml模版导出word Xml模版部 ...

  8. JAXB实现java对象与xml之间转换

    一.Jaxb处理java对象和xml之间转换常用的annotation有: 1. @XmlType 2. @XmlElement 3. @XmlRootElement 4. @XmlAttribute ...

  9. 使用JAXB将XML Schema绑定到Java类

    http://blog.csdn.net/zsyspace/article/details/1786079 Java Architecture for XML Binding (JAXB) 是一项可以 ...

最新文章

  1. 数据结构二:排序(快速排序和堆排序)
  2. asp.net + ajax + sqlserver 自动补全功能,asp.net+ajax+sqlserver自动补全功能实现解析
  3. Java元宵趣图_2019元宵节,猪你元宵节快乐
  4. WPF中嵌套charts图表查询数据
  5. 路由器信息备份还原指南
  6. linux检查启动与否,关于linux启动的问题。
  7. subsonic杂记
  8. NetMeeting不能共享桌面的解决办法
  9. CS和BS 到底是什么
  10. pdf转word好用的软件
  11. html添加启动项,windows boot manager启动项是什么
  12. 解锁小众网站 站在巨人的肩膀上
  13. mc:Ignorable=d什么意思?
  14. 用python画玫瑰花
  15. ibm服务器卡在开机界面_使用HTTPS配置IBM Integration Bus Web用户界面
  16. k线图 TradingVeiw --简介篇
  17. 商业银行管理(ROSE) 思维导图
  18. App中根据多个字段检索功能总结
  19. 省首例AI犯罪案:归咎技术是欲加之罪?
  20. 计算机设计大赛指导老师的申报书,附件大赛作品申报书.DOC

热门文章

  1. Geek的卸载存在小小缺憾
  2. python爬取京东网页商品实例(一)
  3. 上海领科作为A-Level领军学校,为什么要开设IB课程?
  4. java 修改word属性_Java修改/替换Word批注
  5. 新一代垃圾回收器—ZGC
  6. 英语语言测试学什么软件,开言英语APP,让语言学习在真实情况下进行
  7. 史上最强ASR非特定人声语音识别模块,完爆LD3320
  8. 解决Maven无法使用ojdbc依赖的问题
  9. 2011正月初3 震中映秀
  10. GitHub的Linux配置与常用操作