java将XML文档转换成json格式数据

功能

将xml文档转换成json格式数据


说明

依赖包:

1. jdom-2.0.2.jar : xml解析工具包;

2. fastjson-1.1.36.jar : 阿里巴巴研发的高性能json工具包


程序源码

package com.xxx.open.pay.util;

import com.alibaba.fastjson.JSONObject;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedList;
import java.util.List;

/**
 * Created by [email protected] on 2015/5/19.
 */
public class XmlUtil {
    public static JSONObject xml2JSON(byte[] xml) throws JDOMException, IOException {
        JSONObject json = new JSONObject();
        InputStream is = new ByteArrayInputStream(xml);
        SAXBuilder sb = new SAXBuilder();
        org.jdom2.Document doc = sb.build(is);
        Element root = doc.getRootElement();
        json.put(root.getName(), iterateElement(root));
        return json;
    }

    private static JSONObject iterateElement(Element element) {
        List node = element.getChildren();
        Element et = null;
        JSONObject obj = new JSONObject();
        List list = null;
        for (int i = 0; i < node.size(); i++) {
            list = new LinkedList();
            et = (Element) node.get(i);
            if (et.getTextTrim().equals("")) {
                if (et.getChildren().size() == 0)
                    continue;
                if (obj.containsKey(et.getName())) {
                    list = (List) obj.get(et.getName());
                }
                list.add(iterateElement(et));
                obj.put(et.getName(), list);
            } else {
                if (obj.containsKey(et.getName())) {
                    list = (List) obj.get(et.getName());
                }
                list.add(et.getTextTrim());
                obj.put(et.getName(), list);
            }
        }
        return obj;
    }

    public static void main(String[] args) throws JDOMException, IOException {
        String xml="<?xml version=\"1.0\" encoding=\"utf-8\" ?><MoBaoAccount MessageType=\"UserMobilePay\" PlatformID=\"b2ctest\"><OrderNo>M20150521084825</OrderNo><TradeAmt>5000.00</TradeAmt><Commission>0.5</Commission><UserID>zhuxiaolong</UserID><MerchID>zhuxiaolong1</MerchID><tradeType>0</tradeType><CustParam>123</CustParam> <NotifyUrl>http://mobaopay.com/callback.do</NotifyUrl><TradeSummary>订单</TradeSummary></MoBaoAccount>";
        JSONObject json=xml2JSON(xml.getBytes());
        System.out.println(json.toJSONString());
    }
}

运行结果

  • XML原文:
<?xml version="1.0" encoding="utf-8" ?>
<MoBaoAccount MessageType="UserMobilePay" PlatformID="b2ctest">
    <OrderNo>M20150521084825</OrderNo>
    <TradeAmt>5000.00</TradeAmt>
    <Commission>0.5</Commission>
    <UserID>xiaolong</UserID>
    <MerchID>xiaolong1</MerchID>
    <tradeType>0</tradeType>
    <CustParam>123</CustParam>
    <NotifyUrl>http://mobaopay.com/callback.do</NotifyUrl>
    <TradeSummary>订单</TradeSummary>
</MoBaoAccount>
  • 转换后的json格式数据
{
    "MoBaoAccount": {
        "Commission": [
            "0.5"
        ],
        "CustParam": [
            "123"
        ],
        "MerchID": [
            "zhuxiaolong1"
        ],
        "NotifyUrl": [
            "http://mobaopay.com/callback.do"
        ],
        "OrderNo": [
            "M20150521084825"
        ],
        "TradeAmt": [
            "5000.00"
        ],
        "TradeSummary": [
            "订单"
        ],
        "UserID": [
            "zhuxiaolong"
        ],
        "tradeType": [
            "0"
        ]
    }
}

关于我

Q Q:1250052380

邮箱:[email protected]

时间: 2024-12-26 21:47:25

java将XML文档转换成json格式数据的相关文章

php json_encode 将数组转换成json格式数据出错

当用php 的 json_encode 函数将数组转换成json格式的时候,如果该数组是一个索引数组而且数组的索引的顺序不是按照0,1,2...排序的话,在转换成json数据的时候就不能得到你所想要的json数组,而是一个json对象 这个问题是在开发app接口的时候发现的,因为php和app之前是通过json数据格式进行数据通讯的,而app那边对json的数组和对象类型很敏感,本来是数组格式的,可是突然变对象了,导致出错,后来就发现,php这边的索引数组的键名没有按照顺序排序的,导致转成jso

使用kettle把XML文档转换成数据表结构

 在kettle中Get data from xml 步骤和 XML Input Stream (StAX)步骤读取并解析xml文件.Get data from xml 步骤使用dom方式解析,比较消耗内存,当文件很大时,就不可取.XML Input Stream (StAX)步骤使用完全不同的方式解析大而复杂的文件,且能快速载入数据,所以建议使用该步骤. 下面通过示例来展示如何使用该步骤,源xml文件内容如下: <?xml version="1.0"?> <ti

C#实现文档转换成PDF

网上有很多将doc.ppt.xls等类型的文档转换成pdf的方法,目前了解到的有两大类: 1.使用虚拟打印机将doc.ppt.xls等类型的文档 2.使用OFFICE COM组件 我采用了第二种方法实现,初步测试通过,还没有放到服务器上进行批量实时转换的测试. 下面开始介绍详细步骤: 1.安装OFFICE 2007.我安装的是OFFICE 2007 Professional Plus版.安装后提示要激活,开始没有激活也能使用,只是每次一打开office软件就提示要激活,实在忍受不了,就下了一个激

java将office文档pdf文档转换成swf文件在线预览

java将office文档pdf文档转换成swf文件在线预览 第一步,安装openoffice.org   openoffice.org是一套sun的开源office办公套件,能在widows,linux,solaris等操作系统上执行. 主要模块有writer(文本文档),impress(演示文稿),Calc(电子表格),Draw(绘图),Math(公式),base(数据库) 笔者下载的是openoffice.org 3.3.0.下载完直接安装即可.      但是,我们还需要启动openof

浅析如何将XML文档解析成java对象(待梳理)

User类 public class User implements Serializable { private static final long serialVersionUID = 7506854293380407436L; private Integer id; private String loginName; private String password; private Date createDate; private String username; public User(

将Latex tex文档转换成 word文档(上)

有时候逼不得已,必须得将自己精心排版好的latex 文档 转换成word 给别人编辑 以下提供一个方法 下载 Tex2Word 工具,地址我的网盘 安装 解压后安装,使用默认安装路径 安装过程中.点击使用安装 破解软件.依照安装包里给出方法将 C:\Program Files\tex2word C:\Program Files\Microsoft Office\OFFICE11\STARTUP\ C:\Program Files\Common Files\Microsoft Shared\TEX

如何把ppt文档转换成pdf

如何把ppt文档转换成pdf 如何把ppt转换成pdf?你是否会在制作ppt的时候想将其转换成PDF格式而上传至网络上与网友共享?使用迅捷ppt转换成pdf转换器就可以很轻松的解决这一问题. 具体操作过程如下: 1 首先手头要有一份ppt演示稿(文稿可以是单个或是多个).在在电脑上桌面上新建2个文件夹,一个取名为“ppt”,另一个命名为“pdf”; 2.双击开打ppt转pdf转换软件(这里以ppt转pdf为例).在“菜单栏”中选择“Office转pdf”; 3.点击添加文件将此“ppt”格式文件

如何将ppt文档转换成pdf

如何将ppt文档转换成pdfpdf转换成ppt,也许你很容易解决,但是反之把ppt转换成pdf你是否知道方法呢?曾经我很笨拙地将ppt里面的文字一段段地粘贴出来,整个过程花费了很多时间,但最后在校对的时候发现还是出现了错误,那个工作量就可想而知了...... 经过后面的不断测试,还是被我幸运的找到了一款非常好用的ppt转换成pdf转换器,其不但方便,还可以起到保护源文件的作用.无需其他高级程序,只需要一个软件就能实现. (一)准备: 1.迅捷ppt转pdf转换器正式版;       2.500张

java操作xml文档

目前最常用的XML解析技术是DOM和SAX. DOM是基于XML的树结构来完成解析的,适用于多次访问的XML文档,但是DOM解析比较消耗资源:而SAX是基于事件解析,适用于大数据量的XML文档,占用资源少,内存消耗小. DOM是文档对象模型(Document Object Model) 首先DOM会将XML文档映射成一颗倒挂的树,在这棵树中,每个节点都是以节点对象的形式存在的. 我们通过操作这些对象就可以完成XML文件的读写任务了. 我们可以直接根据节点的名称或属性查找该节点对象,也可以根据一个