java 用 jackson 进行 xml bean 互转
2015-08-27 14:57
671 查看
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 定义文件,必需。
相关文章推荐
- Maven错误信息:Missing artifact jdk.tools:jdk.tools:jar:1.6
- Java加密与解密的艺术-Base64
- spring Bean-实例请求触发放回引用(工厂模式)
- Java汉字验证码
- JavaVisualVM监控远端JAVA程序
- spring transaction 注解方法报错Can not set field to proxy
- 安卓RSA加密,适配javaweb
- eclipse中使用jetty进行远程调试
- struts2表单验证里field-validator type值一共可以取哪些?都什么含义?
- Eclipse开发必备干货分享
- MyEclipse优化设置(最详细版本)
- java axis2 webservice
- struts2文件上传时获取上传文件的大小
- Spring MVC 开发 配置
- Java基础知识强化02:import static 和 import
- Spring mvc学习笔记
- 由freemarker毫秒级时间谈固定日期格式
- java7 Fork/Join
- spring与mybatis四种整合方法
- Spring MVC之@RequestBody, @ResponseBody 详解