`
fkyq01
  • 浏览: 38334 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

xml与对象转换

    博客分类:
  • java
 
阅读更多
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

/*
 *
 * The XML File Reader by Object
 */
public final class XmlReader {

	private static String xmlCoding = "UTF-8";

	@SuppressWarnings("unchecked")
	public static Marshaller createMarshallerByType(Class type) {
		Marshaller mar = null;
		try {
			JAXBContext jax = JAXBContext.newInstance(type);
			mar = jax.createMarshaller();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return mar;
	}

	@SuppressWarnings("unchecked")
	private static Unmarshaller createUnMarshallerByType(Class type) {
		Unmarshaller unMar = null;
		try {
			JAXBContext jax = JAXBContext.newInstance(type);
			unMar = jax.createUnmarshaller();
		} catch (Exception e) {
			e.printStackTrace();
		}
		return unMar;
	}

	/**
	 * parse XML Object to XML String
	 * 
	 * @param obj
	 * @return
	 */
	public static String parseObjectXmlData(Object obj) {
		String backXml = null;
		ByteArrayOutputStream baos = null;
		try {
			baos = new ByteArrayOutputStream();
			Marshaller mar = createMarshallerByType(obj.getClass());
			mar.marshal(obj, baos);
			//backXml = baos.toString();
			backXml = new String(baos.toByteArray(), xmlCoding);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (baos != null) {
				try {
					baos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

		return backXml;
	}

	/***
	 * if enCoding is null ,the encoding is UTF-8
	 * 
	 * @param obj
	 * @param enCoding
	 * @return
	 */
	public static String parseObjectXmlData(Object obj, String enCoding) {
		String backXml = null;
		ByteArrayOutputStream baos = null;
		try {
			if (enCoding != null) {
				xmlCoding = enCoding;
			}
			baos = new ByteArrayOutputStream();
			Marshaller mar = createMarshallerByType(obj.getClass());
			mar.marshal(obj, baos);
			backXml = baos.toString();
			backXml = new String(baos.toByteArray(), xmlCoding);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (baos != null) {
				try {
					baos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return backXml;
	}
	
	/**
	 * 
	 * default xmlCoding is UTF-8
	 * 
	 * @param type
	 * @param xmlData
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Object parseXmlDataObject(Class type, String xmlData) {
		if (xmlData == null || xmlData.trim().length() == 0) {
			return null;
		}
		ByteArrayInputStream bais = null;
		try {
			Unmarshaller unMar = createUnMarshallerByType(type);
			bais = new ByteArrayInputStream(xmlData.getBytes(xmlCoding));
			return unMar.unmarshal(bais);
		} catch (Exception e) {
			//ResourceUtils.printLog(e.toString());
		} finally {
			if (bais != null) {
				try {
					bais.close();
				} catch (IOException e) {
					//ResourceUtils.printLog(e.toString());
				}
			}
		}
		return null;
	}

	/**
	 * get data from xml
	 * 
	 * @param type
	 * @param xmlData
	 * @param enCoding
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Object parseXmlDataObject(Class type, String xmlData,
			String enCoding) {
		if (xmlData == null || xmlData.trim().length() == 0) {
			return null;
		}
		ByteArrayInputStream bais = null;
		try {
			xmlCoding = enCoding;
			Unmarshaller unMar = createUnMarshallerByType(type);
			bais = new ByteArrayInputStream(xmlData.getBytes(xmlCoding));
			return unMar.unmarshal(bais);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (bais != null) {
				try {
					bais.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return null;
	}

	/**
	 * parse XML Object to XML File
	 * 
	 * @param obj
	 * @return
	 */
	public static boolean parseObjectXmlFile(Object obj,String fullpath) {

		FileOutputStream fos = null;
		try {
			fos = new FileOutputStream(fullpath);
			Marshaller mar = createMarshallerByType(obj.getClass());
			mar.marshal(obj, fos);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (fos != null) {
				try {
					fos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}
		return true;
	}
	
	/**
	 * get data from xml by file
	 * @param type
	 * @param xmlPath
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Object parseXmlDataObjectByPath(Class type, File file) {
		if (file == null) {
			return null;
		}
		try {
			Unmarshaller unMar = createUnMarshallerByType(type);
			return unMar.unmarshal(file);
		} catch (Exception e) {
			e.printStackTrace();
		} 
		
		return null;
	}
}

分享到:
评论

相关推荐

    xml转对象封装的简单与复杂xml的转化写法

    标题提到的"xml转对象封装的简单与复杂xml的转化写法"主要涉及以下知识点: 1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例...

    JAXB xml与对象转换

    5. **Marshalling**:使用Marshaller对象的`marshal()`方法,将Java对象转换成XML字符串或写入XML文件。 ### 示例代码 ```java import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind....

    xml转换对象

    在提供的压缩包文件“xml与对象转换”中,可能包含了JAXB或DOM的示例代码。通过查看和学习这些示例,你可以更好地理解XML和Java对象之间的转换过程,以及如何在实际项目中应用这些技术。记得实践是掌握知识的关键,...

    C# XmlToList xml转换成对象,Xml转对象

    其中,`ConvertXmlElementToT`是一个辅助方法,负责将 XElement 对象转换为 T 类型的对象。 5. **第二种实现方法**:使用`XmlSerializer`。`XmlSerializer`可以将XML序列化和反序列化为.NET对象。首先,创建一个T...

    JAXB技术实现xml与java对象互相转化代码教程

    使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...

    Android应用源码之AndroidXstream(解决xml和对象转换问题)_应用.zip

    本篇文章将深入探讨AndroidXstream在Android应用中的使用方法和优势,以及如何解决XML与对象转换问题。 首先,我们需要了解什么是Xstream。Xstream是由Joe Walnes创建的一个开源项目,它提供了Java对象到XML和XML到...

    JAXB工具类 xml转为java对象 java对象转为xml

    2. **Marshaller**: 将Java对象转换为XML文档。 3. **Binder**: 用于在Java类和XML Schema之间建立映射关系。 ### XML到Java对象的转换 要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素...

    XML转换为JAVA对象的方法

    接着,你可以将Java对象转换为XML字符串: ```java Person person = new Person(); person.setName("John"); person.setAge(30); String xml = xstream.toXML(person); System.out.println(xml); ``` 反之,如果...

    xml和JAVA对象转换 simple-xml2object

    simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。

    webservice之使用jaxb把xml转换Object或把对象转换成xml文件

    2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...

    C# xmlToList xml转换成对象

    第一种方法是通过`XmlNodeReader`来逐个读取XML节点,并将其转化为指定的对象。以下是一般的步骤: 1. 加载XML文件:使用`XmlDocument`类加载XML文件内容。 2. 创建XmlNodeReader:用`XmlNodeReader.Create()`方法...

    XML与Java对象互相转化Demo(Eclipse)

    在Java编程中,XML与Java对象的相互转化是常见的需求,特别是在持久化、配置文件处理或网络通信中。本教程通过一个Eclipse项目演示了如何实现这一转化。 首先,我们需要理解XML文档的基本结构。XML文档由元素...

    对象与xml相互转换

    在.NET框架中,C#提供了一组强大的工具来实现对象与XML之间的转换,这使得数据在不同的系统间交换变得简单。本文将详细讲解如何利用C#进行对象到XML的序列化以及XML到对象的反序列化。 首先,我们来看对象到XML的...

    安卓Android源码——AndroidXstream(解决xml和对象转换问题).rar

    这篇内容将详细讲解AndroidXstream如何解决XML与对象转换的问题。 首先,让我们理解XML序列化和反序列化的概念。序列化是指将Java对象转换为XML字符串,以便于存储或传输。反序列化则是相反的过程,将XML字符串解析...

    JAVA对象与XML相互转化DEMO

    JAXB允许我们自动将XML文档映射到Java对象,以及将Java对象转换为XML文档。要使用JAXB,你需要先创建一个Java类来表示XML结构,然后利用JAXB提供的工具生成对应的XML绑定类。以下是基本步骤: 1. **定义Java对象**...

    c# XML 与实体相互转换 源代码

    然后,通过`XmlSerializer.Serialize`方法将实体对象转换为XML,通过`XmlSerializer.Deserialize`方法将XML恢复为实体对象。 描述中提到的"我自己写的一个方法"可能就是实现了这些功能的自定义类或方法。在实际应用...

    xml转换java对象

    1. **配置映射**: 使用Betwixt,你需要创建一个`BeanIntrospector`实例,并通过`introduceBean()`方法指定XML与Java对象的映射规则。通常,Betwixt会尝试基于Java类的公共字段和方法自动建立映射,但也可以通过注解...

    xml与java对象映射

    - **XStream**:XStream是一个流行的库,可以轻松地将Java对象转换为XML,并将XML反序列化回Java对象。它的语法简洁,易于理解和使用。 - **Castor**:Castor提供了XML到Java对象的映射,支持复杂的数据结构,包括...

    C#对象和Xml对象的相互转化

    本篇文章将详细探讨C#对象与XML对象如何进行相互转化。 ### 1. C#对象转XML(对象序列化) **XML序列化** 是将C#对象转换为XML字符串或XML文档的过程。这通常通过`System.Xml.Serialization`命名空间中的`...

    xml和实体对象相互转换 一步到位

    3. 序列化:将Java对象转换为XML字符串,使用`Xstream.toXML()`方法,传入要转换的对象即可。 4. 反序列化:将XML字符串转换回Java对象,使用`Xstream.fromXML()`方法,传入XML字符串。 例如,假设有一个简单的User...

Global site tag (gtag.js) - Google Analytics