java对象和xml相互转换

Castor-xml.jar包

——Castor可以完成Java和XML的相互转换:

1)利用mapping配置,编组JavaObject、解组XML

在此之前我们设置过mapping.xml。如果不设置,肯定是不能转换成我们想要的XML的。那么,mapping.xml配置文件是怎么配置Account这个对象的呢

mapping.xml配置如下

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE mapping PUBLIC"-//EXOLAB/Castor Mapping DTD Version 1.0//EN""http://castor.org/mapping.dtd">

<mapping>

<class name="com.hoo.entity.Account"auto-complete="true">

<map-to xml="Account"/>

<field name="id" type="integer">

<bind-xmlname="id" node="attribute" />

</field>

<field name="name" type="string">

<bind-xml name="name" node="element" />

</field>

<field name="email" type="string">

<bind-xml name="email" node="element" />

</field>

<field name="address" type="string">

<bind-xml name="address" node="element" />

</field>

<field name="birthday"type="com.hoo.entity.Birthday">

<bind-xml name="生日" node="element" />

</field>

</class>

<class name="com.hoo.entity.Birthday">

<map-to xml="birthday" />

<field name="birthday" type="string">

<bind-xml name="birthday" node="attribute" />

</field>

</class>

</mapping>

2)转换实现工具类

import java.io.IOException;

import java.io.StringReader;

import java.io.StringWriter;

import org.exolab.castor.mapping.Mapping;

import org.exolab.castor.mapping.MappingException;

import org.exolab.castor.xml.MarshalException;

import org.exolab.castor.xml.Marshaller;

import org.exolab.castor.xml.Unmarshaller;

import org.exolab.castor.xml.ValidationException;

import org.springframework.core.io.ClassPathResource;

import org.springframework.core.io.Resource;

import org.xml.sax.InputSource;

import com.pinan.demo.example.dto.User;

public class TranslateXmlTools {

public static String convertDTOtoXml(Object obj) throws Exception {

String returnstr = null;

try {

StringWriter sw = new StringWriter();

Mapping mapping = new Mapping();

Resource input = new ClassPathResource("castor-mapping-DTO.xml");

mapping.loadMapping(new InputSource(input.getInputStream()));

Marshaller unmar = new Marshaller(sw);

unmar.setMapping(mapping);

unmar.marshal(obj);

sw.flush();

returnstr = sw.toString();

} catch (Exception ex) {

ex.printStackTrace();

}

return returnstr;

}

public static Object convertXmltoDTO(String xmlStr) throws Exception {

if (null == xmlStr || "".equals(xmlStr)) {

throw new Exception("xml转dto报错,传入参数为空");

}

Mapping mapping = new Mapping();

Resource input = new ClassPathResource("castor-mapping-DTO.xml");

User user = null;

try {

mapping.loadMapping(new InputSource(input.getInputStream()));

Unmarshaller unmar = new Unmarshaller(User.class);

unmar.setMapping(mapping);

user = (User) unmar.unmarshal(new StringReader(xmlStr));

return user;

} catch (MarshalException ex) {

ex.printStackTrace();

} catch (ValidationException ex) {

ex.printStackTrace();

} catch (IOException ex) {

ex.printStackTrace();

} catch (MappingException ex) {

ex.printStackTrace();

} catch (Exception ex) {

ex.printStackTrace();

}

return user;

}

}

时间: 2024-11-05 22:56:37

java对象和xml相互转换的相关文章

java对象与xml相互转换 ---- xstream

XStream是一个Java对象和XML相互转换的工具,很好很强大.提供了所有的基础类型.数组.集合等类型直接转换的支持. XStream中的核心类就是XStream类,一般来说,熟悉这个类基本就够用了. 由于XStream.jar依赖于xmlpull.jar 所以,需将这两个jar一同导入. 下载地址 : https://pan.baidu.com/s/1eSpZs3o#path=%252F%25E5%25B7%25A5%25E5%2585%25B7jar XStream对象相当Java对象和

玩转Java对象和XML相互转换

最近在项目中一直出现Java对象和XML之间的相互转换,一开始由于项目很庞大,我又是临时调度过去,导致在按照项目组长的要求进行写代码的同时,总是在这块云里雾里,最近才慢慢开始搞清楚项目中具体的使用缘由.但是项目中封装的代码总是很庞大,因为要考虑太多的东西,而对于此,我只能通过小的Demo来说明,其实在项目中用到很多插件,轻巧,灵便,封装很好使用,但这里我讲解的是JAXB(Java Architecture for XML Binding). JAXB(Java Architecture for

使用XStream注解实现Java对象与XML互相转换的代码示例

本文记录一下使用xstream这个api的注解特性对Java对象与XML字符串相互转换的一些代码示例.    我们很多人都处理过XML文件,也有很多非常成熟的第三方开源软件.如:jdom.dom4j等.虽然他们的功能非常强大,但在使用上还是有点不那么习惯.对于格式比较固定的XML文档,它的结构没有变化或是很少变化,这时将它转换成我们熟悉的Java对象来操作的话,会使工作变得更容易一些,而xstream正好可以满足这一点.    本文所用xstream的版本为:1.4.7 <dependency>

java socket报文通信(三)java对象和xml格式文件的相互转换

前两节讲了socket服务端,客户端的建立以及报文的封装.今天就来讲一下java对象和xml格式文件的相互转换. 上一节中我们列举了一个报文格式,其实我们可以理解为其实就是一个字符串.但是我们不可能每次都去写字符串啊,这样的话肯定要疯.既然是面向对象的编程,肯定会有好的办法来解决这个问题.我们使用JAXBContext这个工具. package cn.com.egj.entity.shortcutTransfer.test; import java.io.BufferedReader; impo

JSON对象与XML相互转换工具类

依赖jar <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</

JAVA对象和XML文档、原来他们之间还有这一出

最近项目开发中遇到一个问题,访问接口不再通过url地址请求的方式,而是 通过socket发送xml格式的报文到指定服务器来进行信息的统一认证.. 因此组装xml格式的报文字符串以及解析服务器返回的xml格式的字符获得所需数据成了 解决问题的关键..在这之前,以为会有点难...做完之后,然并卵,也就那么一回事... LZ主要用的xStream类..这个类的完美地解决了XML文档和JAVA对象之间的转换.. 由于刚刚接触这个类...对于里面提供的很多功能还没细细挖掘..只是简单地实现了 我想要实现的

XML编程总结(六)——使用JAXB进行java对象和xml格式之间的相互转换

(六)使用JAXB进行java对象和xml格式之间的相互转换 JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类. JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术.该过程中,JAXB也提供了将XML实例文档反向生成Java对象树

通过JAXB完成Java对象与XML之间的转换

Java对象转换XML的过程叫marshal. XML转换到Java对象的过程叫unmarshal. 一.Java对象转化为XML 这里省略getter和setter方法 通过标注@XMLRootElement用于标注XML的根元素.这个类的所有属性默认映射为根元素的子元素. 运行代码后,将生成一个D:\test.xml文件,其数据为 二.XML转化为Java对象 代码运行如下 三.更为复杂的映射 将XML中数据读到ArticleData中,类中有一个List,保存每条article数据

使用JAXB实现JAVA对象和XML字符串的互相转换实例

测试类: package com.yanek.test; import java.util.ArrayList; import java.util.List; import com.yanek.test.JaxbUtil.CollectionWrapper; public class Test { /** * @param args */ public static void main(String[] args) { //创建java对象 Hotel hotel=new Hotel(); ho