java staxon 运用、属性介绍、遇到的坑
一 运用
1. maven 导入
<dependency><groupId>de.odysseus.staxon</groupId><artifactId>staxon</artifactId><version>1.3</version>
</dependency>
2. 使用配置
public class StaxonUtils {/*** @Description: json string 转 xml string*/public static String json2xmlPay(String json) {StringReader input = new StringReader(json);StringWriter output = new StringWriter();JsonXMLConfig config = new JsonXMLConfigBuilder().multiplePI(false).repairingNamespaces(false).build();try {XMLEventReader reader = new JsonXMLInputFactory(config).createXMLEventReader(input);XMLEventWriter writer = XMLOutputFactory.newInstance().createXMLEventWriter(output);writer = new PrettyXMLEventWriter(writer);writer.add(reader);reader.close();writer.close();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();input.close();} catch (IOException e) {e.printStackTrace();}}// 封装xmlreturn xmlHeaderBuild(output);}/*** 头部 xml 不会自动生成,手动拼接上去** @param output* @return*/static String xmlHeaderBuild(StringWriter output) {if (output.toString().length() >= 38) {return "<?xml version=\"1.0\" encoding=\"gbk\"?>\n"+ output.toString().substring(38);}return output.toString();}/*** @Description: xml string 转 json string* @author watermelon_code* @date 2017年7月19日 上午10:50:46*/public static String xml2json(String xml) {StringReader input = new StringReader(xml);StringWriter output = new StringWriter();JsonXMLConfig config = new JsonXMLConfigBuilder().autoArray(true).autoPrimitive(false).prettyPrint(true).build();try {XMLEventReader reader = XMLInputFactory.newInstance().createXMLEventReader(input);XMLEventWriter writer = new JsonXMLOutputFactory(config).createXMLEventWriter(output);writer.add(reader);reader.close();writer.close();} catch (Exception e) {e.printStackTrace();} finally {try {output.close();input.close();} catch (IOException e) {e.printStackTrace();}}return output.toString();}public static void main(String[] args) {String tests = " <ywxx>\n" +" <fplxdm>31210000E476929748</fplxdm>\n" +" <fpxx count=\"1\">\n" +" <group xh=\"1\">\n" +" <fpdm>0320022002xx</fpdm>\n" +" <bmbbbh>42.0</bmbbbh>\n" +" <hsslbs>0</hsslbs>\n" +" <qdbz>1</qdbz>\n" +" <fyxm count=\"1\">\n" +" <group xh=\"1\">\n" +" <fphxz>3</fphxz>\n" +" <spmc>(详见销货清单)</spmc>\n" +" <je>111.49</je>\n" +" <sl>0.13</sl>\n" +" <se>14.51</se>\n" +" </group>\n" +" </fyxm>\n" +" <qdxm count=\"2\">\n" +" <group xh=\"1\">\n" +" <fphxz>0</fphxz>\n" +" <spmc>*食品制造机械*30CM锯刀</spmc>\n" +" <je>15.93</je>\n" +" <sl>0.13</sl>\n" +" <se>2.07</se>\n" +" </group>\n" +" <group xh=\"2\">\n" +" <fphxz>0</fphxz>\n" +" <spmc>*食品制造机械*30CM锯刀</spmc>\n" +" <je>15.04</je>\n" +" <sl>0.13</sl>\n" +" <se>1.96</se>\n" +" </group>\n" +" </qdxm>\n" +" <hjje>111.49</hjje>\n" +" </group>\n" +" </fpxx>\n" +" </ywxx>";String s = xml2json(tests);System.out.println(s);}
}
二 属性介绍和坑
在 xml 转json 中,使用 xml2json 方法,核心配置为 jsonXMLConfig,目前了解的配置有
1. autoArray() 是否自动添加 JSON 数组边界(默认为false)。自动将xml 中的数组节点 转为 json数组,如果为false,则xml转换为字符串时,group 节点会并列,导致转json时,只会取最后一个节点,如下图所示
2. autoPrimitive() 是否自动将元素文本转换为 JSON 原语(默认为false)。为true时自动将xml值转为对应类型,直观的比如纯数字值就不会加双引号,为false 自动会将所有值转为字符串。这里有个坑就是 为true时,有些值他会自动转换,比如这里的 31210000E476929748,会转为 3.1210000E+476929755,变成科学计数法了
3. multiplePI() 是否遵守<? xml-multiple ... ?>处理指令(默认为true)
4. prettyPrint() 是否格式化输出以提高可读性 (默认为false)
5. namespaceSeparator() 用作命名空间前缀分隔符的字符(默认为’:')
java staxon 运用、属性介绍、遇到的坑相关推荐
- java 小坑_关于Java子父类关系的小坑
原标题:关于Java子父类关系的小坑 学过JavaSE的都知道java类在初始化的时候,如果存在直接父类,是先初始化父类,然后才初始化子类. 子类拥有父类所有的非私有化成员,非私有的成员不仅仅包括pu ...
- java zip malformed_关于Java解压文件的一些坑及经验分享(MALFORMED异常)
关于Java解压文件的一些坑及经验分享 就在本周, 测试人员找到我说现上的需求文档(zip格式的)无法预览了, 让我帮忙看看怎么回事. 这个功能也并不是我做的, 于是我便先看看线上日志有没有什么错误, ...
- JAVA百度鹰眼 API 遇到的坑 APP SN校验失败
JAVA百度鹰眼 API 遇到的坑 APP SN校验失败 声明:这不是原创,只是刚好遇到,找了好久,写下来方便以后查询,代码都是复制过来的 1.总是返回sn校验失败,原因是 coords的参数有逗号, ...
- kotlin与java混合开发_使用kotlin和Java混合开发Android项目爬坑记录
使用kotlin和Java混合开发Android项目爬坑记录 不定期将开发过程中遇到的问题添加在此处,加深记忆. 主要内容包括但不限于java与kotlin语言的一些区别,以及在使用android-s ...
- Java日常开发的21个坑,你踩过几个?
前言 最近看了极客时间的<Java业务开发常见错误100例>,再结合平时踩的一些代码坑,写写总结,希望对大家有帮助,感谢阅读~ 1. 六类典型空指针问题 包装类型的空指针问题 级联调用的空 ...
- blockingqueue java_记录 Java 的 BlockingQueue 中的一些坑
最近学习了 BlockingQueue,发现 java 的 BlockingQueue 并不是每一个实现都按照 BlockingQueue 的语意来的,其中有不少坑. 直接上代码吧: 1.关于Prio ...
- 时间转换竟多出1年!Java开发中的20个坑你遇到过几个?
前言 最近看了极客时间的<Java业务开发常见错误100例>,再结合平时踩的一些代码坑,写写总结,希望对大家有帮助,感谢阅读~ 1. 六类典型空指针问题 包装类型的空指针问题 级联调用的空 ...
- Java集合工具类的一些坑,Arrays.asList()、Collection.toArray()...
Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...
- Java连接Access数据库的那些坑
Java 使用 JDBC 连接Access数据库 需要掌握的技能 1.Java SE基本技术 2.懂点JDBC技术 能够学到如何使用Java正确的连接JDBC 环境 window8.1 64位 jdk ...
最新文章
- 如何理解导远技术手册
- Ubuntu中如何使得程序在后台运行
- 当yum 遇到No more mirrors to try
- class声明为final的好处
- 以太坊私有链 使用dev模式
- pat 甲级 1034. Head of a Gang (30)
- bson json c语言,对比平台--JSON和BSON之间的区别
- 企业部署BI系统怎么能一直做下去,PDCA闭环是关键
- 让自己的网站变成暗黑模式
- Eclipse启动项目报启动上下文失败问题解决方案总结
- Cygwin的进程管理
- 高程(三)--- Date
- 解决EXE文件无法打开的问题!
- Windows虚拟机忘记操作系统密码
- Revit导入CAD翻模丨CAD图层管理控制显示隐藏图层
- K3销售订单携带批号至销售出库单
- 【学习笔记】系统集成项目管理一:项目进度网络图(01)单双代号网络图
- php导航自助收录源码,最近网上流行的导航网秒收录网站php源码
- python开发网页视频播放器_python实现媒体播放器功能
- Scheme协议详细介绍
热门文章
- Android Studio Maven仓库设置aliyun、google、jcenter
- Metapsloit后渗透Windows攻击(亲测metepreter使用教程)
- 「一本通 1.2 例 2」Best Cow Fences
- 易语言打开linux里的文本文件,易语言教程读入文件和写到文件
- count 与 group by
- 数据专员面试说什么_您说什么:如何备份数据?
- 记录以下,Nod32的更新服务器
- 在网页上使用图文混排的编辑器
- python中条件分支语句
- P1118 [USACO06FEB]Backward Digit Sums G/S