码迷,mamicode.com
首页 > 编程语言 > 详细

java 用 jackson 进行 xml bean 互转

时间:2015-08-27 15:15:32      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:xml   java   bean   xsd   

xml和bean互转

maven 依赖包

    <properties>
        <json-version>2.4.2</json-version>
    </properties>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${json-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${json-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${json-version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>${json-version}</version>
        </dependency>

jackson xmlMapper 对象

package com.tqmall.utils;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

/**
 *
 * @author yibo.liu
 */
public class JacksonMapper {
    /**
     * can reuse, share globally
     */
    private static final ObjectMapper object = new ObjectMapper();

    /**
     * can reuse, share globally
     */
    private static final XmlMapper xml = new XmlMapper();

    /**
     * private constructor
     */
    private JacksonMapper() {
    }

    /**
     * return a ObjectMapper that is singleton
     * @return
     */
    public static ObjectMapper getObjectMapper() {
        return object;
    }

    /**
     * return a XmlMapper that is singleton
     * @return
     */
    public static XmlMapper getXmlMapper() {
        return xml;
    }
}

转换工具类

package com.tqmall.elasticsearch.nindex.writer.slaveproxy;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;

/**
 * 通用方法,用于转换xml到bean,或者bean 到xml
 * @author yibo.liu
 */
public class JacksonUtils {

    public static void main(String[] args) throws IOException {
        new SlaveIndexXmlParser().parse();
    }

    /**
     * XML To Object
     *
     * @param xmlPath
     * @param cls
     * @param <T>
     * @return
     * @throws IOException
     */
    public static <T> T xmlToBean(String xmlPath, Class<T> cls) throws IOException {
        XmlMapper xml = JacksonMapper.getXmlMapper();
        T obj = xml.readValue(new File(xmlPath), cls);
        return obj;
    }

    /**
     * @param xmlFile
     * @param cls
     * @param <T>
     * @return
     * @throws IOException
     */
    public static <T> T xmlToBean(File xmlFile, Class<T> cls) throws IOException {
        XmlMapper xml = JacksonMapper.getXmlMapper();
        T obj = xml.readValue(xmlFile, cls);
        return obj;
    }

    /**
     * @param xmlInputStream
     * @param cls
     * @param <T>
     * @return
     * @throws IOException
     */
    public static <T> T xmlToBean(InputStream xmlInputStream, Class<T> cls) throws IOException {
        XmlMapper xml = JacksonMapper.getXmlMapper();
        T obj = xml.readValue(xmlInputStream, cls);
        return obj;
    }

    public static <T> String beanToXml(T bean) throws JsonProcessingException {
        XmlMapper xml = JacksonMapper.getXmlMapper();
        String string = xml.writeValueAsString(bean);
        return string;
    }
}

xml文档结构定义:

这一部分不是重点。只是简单描述。
1. 扩展为 .xsd 的文件为 XML Schemas Definition ,所以我们需要先定义这个文件。(在项目中可以直接套用spring maven 等包的定义,改成自己的)
2. xmlns:xs=”http://www.w3.org/2001/XMLSchema” 中 xmlns 是 xml namespace ,即命名空间, :xs 是别名定义,如果有引用多个,用于区分不同的命名空间,避免命令冲突。而引号里面的,就是xml定义文档了。这个是网际网路联盟(World Wide Web Consortium,简称W3C)的定义,也就是定义 xsd 文档 的定义。
3. targetNamespace=”http://www.tqmall.com/search/slave/0.0.1” xmlns=”http://www.tqmall.com/search/slave/0.0.1” 这两个中,targetNamespace是定义这个文档的命名空间,也就是你定义的这个文档,而后面那个就是直接引用了自己,干什么用的,不清楚。
4. 然后,在使用上面定义的xsd的xml里面
- xmlns=”http://www.tqmall.com/search/slave/0.0.1”
- xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
- xsi:schemaLocation=”http://www.tqmall.com/search/slave/0.0.1
- http://www.tqmall.com/search/slave/slave-0.0.1.xsd
- xsi:schemaLocation 是用来导入需要用到的 xsd 定义文件,必需。

版权声明:本文为博主原创文章,未经博主允许不得转载。

java 用 jackson 进行 xml bean 互转

标签:xml   java   bean   xsd   

原文地址:http://blog.csdn.net/zhanlanmg/article/details/48027833

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!