java 用 jackson 进行 xml bean 互转

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 定义文件,必需。

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

时间: 2024-10-16 03:36:34

java 用 jackson 进行 xml bean 互转的相关文章

【Java】Jackson解析xml的坑

为了获取xml数据,在spring mvc中针对 @ResponseBody配置了jackson. 刚用的时候内心是狂喜的,终于不用自己解析了----  but----------还是有坑的-- 坑一:大小写问题 @JacksonXmlProperty(localName = "Apid") private Integer Apid; private Integer getApid() { return this.Apid } 把注解放在成员变量上面,会解析出两个apid字段,一个是&

Java Jaxb JavaBean与XML互转

1.Jaxb - Java Arcitecture for XML Binding 是业界的一个标准,是一项可以根据XML Schema产生Java类的技术. Jaxb2.0是Jdk1.6的组成部分.不需要在第三方Jar包的支持下即可完成Xml与JavaBean的相互转换. 2.重要概念: ·JAXBContext类,是应用的入口,用于管理XML/Java绑定信息. ·Marshaller接口,将Java对象序列化为XML数据. ·Unmarshaller接口,将XML数据反序列化为Java对象

使用谷歌Gson实现Json串和Java Bean互转

/** * 使用谷歌Gson实现Json串和Java Bean互转 */ public class JsonHelper { public static String toJson(Object src){ return new Gson().toJson(src); } public static <T> T fromJson(String json, Class<T> clazz) throws Exception { return new Gson().fromJson(js

Java使用jackson操作Json格式数据

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,她是 JavaScript原生态的数据格式. 她独立于任何编程语言.可读性高.易于生成和解析.体积轻量,这些优雅的特性,让JSON成为非常理想的数据交换的语言. 原文地址: http://www.hpboys.com/616.html 在使用Java操作JSON时,我们用到了Jackson框架. Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Ja

java实现Spring在XML配置java类

1.创建自己的bean文件:beans.xml <?xml version="1.0" encoding="UTF-8"?> <busi-beans> <beans> <bean id="SysHelloImpl" type="com.cxm.test.SysHello"> <desc>test</desc> <impl-class>com.c

启动项目的时候报错: Loading XML bean definitions from class path resource [applicationContext.xml]

记录一下: org.springframework.context.support.AbstractApplicationContext prepareRefresh Refreshing org[email protected]7cef4e59: startup date [Fri Sep 30 09:33:28 CST 2016]; root of context hierarchy org.springframework.beans.factory.xml.XmlBeanDefinitio

JAVA序列化和反序列化XML

package com.lss.utils; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; /** * JAVA序列化和反序列化X

Java测试类获取spring bean方法

Java测试类获取spring bean方法 http://blog.163.com/lizhenming_2008/blog/static/76558333201362094243911/ 1.通过spring上下文 ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationcontext.xml"); DataSource ds = (DataSource) ctx.getBean("d

使用idea搭建maven项目时 java目录下的xml文件没有加载的解决方法

今天在idea集成开发环境下 使用maven搭建了ssm项目,遇到了3个问题 首先我们先复习一下知识点: 第一步:在web.xml中配置spring监听器 <!-- spring监听器 加载spring容器 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <con