• xml转为json格式


    1.pom依赖

            <!--        方法2的依赖-->
            <dependency>
                <groupId>com.fasterxml</groupId>
                <artifactId>jackson-xml-databind</artifactId>
                <version>0.6.2</version>
            </dependency>
            <!--        方法1的依赖-->
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20171018</version>
            </dependency>

    2.要读取的xml内容

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.example.sharejdbctable.mapper.UserMapper">
        <insert id="save" parameterType="com.example.sharejdbctable.po.User">
            INSERT INTO t_user(id,name,sex)
            VALUES
            (
                #{id},#{name},#{sex}
            )
        </insert>
    
        <select id="get" parameterType="long" resultType="com.example.sharejdbctable.po.User">
            select * from t_user where id = #{id}
        </select>
    
            <insert id="saveOrder" parameterType="com.example.sharejdbctable.dto.OrderDto">
            INSERT INTO t_order(order_id,user_id,status)
            VALUES
            (
                #{order_id},#{user_id},#{status}
            )
        </insert>
    
                <insert id="saveOrderDetail" parameterType="java.util.ArrayList">
            INSERT INTO t_order_item(order_item_id,order_id,user_id,status)
            VALUES
            <foreach collection="list" item="item" separator=",">
            (#{item.order_item_id},#{item.order_id},#{item.user_id},#{item.status})
            </foreach>
        </insert>
    </mapper>

    3.转json代码

     StringWriter writer = null;
            try {
                //文档构建工厂
                DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                        .newInstance();
                //文档构建器
                DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
                //读取xml文档转为对象
                Document doc = dBuilder.parse(new File("D:/other/sharejdbc/sharejdbctable/src/main/resources/mapper/mapper.xml"));
                //创建dom节点的输入源,该操作将应用于以此节点为根的子树
                DOMSource domSource = new DOMSource(doc);
                writer = new StringWriter();
                //创建流对象
                StreamResult result = new StreamResult(writer);
                //构建TransformerFactory工厂
                TransformerFactory tf = TransformerFactory.newInstance();
                //Transformer可以将源树转为结果树
                Transformer transformer = tf.newTransformer();
                transformer.transform(domSource, result);
    
                //方法一:完美解决
                JSONObject jsonObject1 = XML.toJSONObject(writer.toString());
                System.out.println(jsonObject1);
    
                System.out.println("--------------------------");
                //方法二:有缺陷,无法得到完整的xml内容
                ObjectMapper xmlMapper = new XmlMapper();
                Object jsonObject = xmlMapper.readValue(writer.toString(), Object.class);
                System.out.println(JSONUtils.toJSONString(jsonObject));
    
            } catch (TransformerFactoryConfigurationError e) {
                e.printStackTrace();
            } catch (TransformerException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (SAXException e) {
                e.printStackTrace();
            } finally {
                try {
                    writer.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }

    4.控制台输出如下:可见方法一是完整输出,但是方法二无法完成

    {"mapper":{"select":{"parameterType":"long","id":"get","resultType":"com.example.sharejdbctable.po.User","content":"select * from t_user where id = #{id}"},"namespace":"com.example.sharejdbctable.mapper.UserMapper","insert":[{"parameterType":"com.example.sharejdbctable.po.User","id":"save","content":"INSERT INTO t_user(id,name,sex)
            VALUES
            (
                #{id},#{name},#{sex}
            )"},{"parameterType":"com.example.sharejdbctable.dto.OrderDto","id":"saveOrder","content":"INSERT INTO t_order(order_id,user_id,status)
            VALUES
            (
                #{order_id},#{user_id},#{status}
            )"},{"parameterType":"java.util.ArrayList","foreach":{"item":"item","collection":"list","separator":",","content":"(#{item.order_item_id},#{item.order_id},#{item.user_id},#{item.status})"},"id":"saveOrderDetail","content":"INSERT INTO t_order_item(order_item_id,order_id,user_id,status)
            VALUES"}]}}
    --------------------------
    {"namespace":"com.example.sharejdbctable.mapper.UserMapper","insert":{"id":"saveOrderDetail","parameterType":"java.util.ArrayList","foreach":{"collection":"list","item":"item","separator":",","":"
    		(#{item.order_item_id},#{item.order_id},#{item.user_id},#{item.status})
    		"}},"select":{"id":"get","parameterType":"long","resultType":"com.example.sharejdbctable.po.User","":"
            select * from t_user where id = #{id}
        "}}

    方法一:

     方法二:

  • 相关阅读:
    程序员面试金典题解
    Leetcode 解题报告
    常用小算法
    BestCoder 百度之星2016
    jQuery 删除或是清空某个HTML元素。
    dataTable 默认排序设定
    jquery tableExport 插件导出excel (无乱码) 比较简单的表格
    php 根据周数获取当周的开始日期与最后日期
    thinkphp5使用load和use引入第三方类
    判断checkbox是否选中
  • 原文地址:https://www.cnblogs.com/hyy9527/p/15323336.html
Copyright © 2020-2023  润新知