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的转化写法"主要涉及以下知识点: 1. **JDOM库**:JDOM是Java Document Object Model的缩写,它提供了一种在内存中表示XML文档的方式,通过创建SAXBuilder或DOMBuilder实例...
5. **Marshalling**:使用Marshaller对象的`marshal()`方法,将Java对象转换成XML字符串或写入XML文件。 ### 示例代码 ```java import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind....
在提供的压缩包文件“xml与对象转换”中,可能包含了JAXB或DOM的示例代码。通过查看和学习这些示例,你可以更好地理解XML和Java对象之间的转换过程,以及如何在实际项目中应用这些技术。记得实践是掌握知识的关键,...
其中,`ConvertXmlElementToT`是一个辅助方法,负责将 XElement 对象转换为 T 类型的对象。 5. **第二种实现方法**:使用`XmlSerializer`。`XmlSerializer`可以将XML序列化和反序列化为.NET对象。首先,创建一个T...
使用java jdk的JAXB技术实现xml与java对象互相转化代码教程: JDK中JAXB相关的重要Class和Interface:(来源于百度百科JAXB) •JAXBContext类,是应用的入口,用于管理XML/Java绑定信息。 •Marshaller接口,将Java...
本篇文章将深入探讨AndroidXstream在Android应用中的使用方法和优势,以及如何解决XML与对象转换问题。 首先,我们需要了解什么是Xstream。Xstream是由Joe Walnes创建的一个开源项目,它提供了Java对象到XML和XML到...
2. **Marshaller**: 将Java对象转换为XML文档。 3. **Binder**: 用于在Java类和XML Schema之间建立映射关系。 ### XML到Java对象的转换 要将XML转换为Java对象,首先需要一个对应的Java类,该类的字段与XML元素...
接着,你可以将Java对象转换为XML字符串: ```java Person person = new Person(); person.setName("John"); person.setAge(30); String xml = xstream.toXML(person); System.out.println(xml); ``` 反之,如果...
simple-xml2object是一个简单实用的xml和JAVA对象转换的类库,jar包很小,而且不需要任何依赖包。 下载后,压缩包包含一个jar包,导入即可。包含一个测试类,有详细的注释展示用法。还包含一个中文文档。
2. 序列化XML:使用`Marshaller`接口将Java对象转换为XML文档。例如: ```java JAXBContext jaxbContext = JAXBContext.newInstance(User.class); Marshaller marshaller = jaxbContext.createMarshaller(); ...
第一种方法是通过`XmlNodeReader`来逐个读取XML节点,并将其转化为指定的对象。以下是一般的步骤: 1. 加载XML文件:使用`XmlDocument`类加载XML文件内容。 2. 创建XmlNodeReader:用`XmlNodeReader.Create()`方法...
在Java编程中,XML与Java对象的相互转化是常见的需求,特别是在持久化、配置文件处理或网络通信中。本教程通过一个Eclipse项目演示了如何实现这一转化。 首先,我们需要理解XML文档的基本结构。XML文档由元素...
在.NET框架中,C#提供了一组强大的工具来实现对象与XML之间的转换,这使得数据在不同的系统间交换变得简单。本文将详细讲解如何利用C#进行对象到XML的序列化以及XML到对象的反序列化。 首先,我们来看对象到XML的...
这篇内容将详细讲解AndroidXstream如何解决XML与对象转换的问题。 首先,让我们理解XML序列化和反序列化的概念。序列化是指将Java对象转换为XML字符串,以便于存储或传输。反序列化则是相反的过程,将XML字符串解析...
JAXB允许我们自动将XML文档映射到Java对象,以及将Java对象转换为XML文档。要使用JAXB,你需要先创建一个Java类来表示XML结构,然后利用JAXB提供的工具生成对应的XML绑定类。以下是基本步骤: 1. **定义Java对象**...
然后,通过`XmlSerializer.Serialize`方法将实体对象转换为XML,通过`XmlSerializer.Deserialize`方法将XML恢复为实体对象。 描述中提到的"我自己写的一个方法"可能就是实现了这些功能的自定义类或方法。在实际应用...
1. **配置映射**: 使用Betwixt,你需要创建一个`BeanIntrospector`实例,并通过`introduceBean()`方法指定XML与Java对象的映射规则。通常,Betwixt会尝试基于Java类的公共字段和方法自动建立映射,但也可以通过注解...
- **XStream**:XStream是一个流行的库,可以轻松地将Java对象转换为XML,并将XML反序列化回Java对象。它的语法简洁,易于理解和使用。 - **Castor**:Castor提供了XML到Java对象的映射,支持复杂的数据结构,包括...
本篇文章将详细探讨C#对象与XML对象如何进行相互转化。 ### 1. C#对象转XML(对象序列化) **XML序列化** 是将C#对象转换为XML字符串或XML文档的过程。这通常通过`System.Xml.Serialization`命名空间中的`...
3. 序列化:将Java对象转换为XML字符串,使用`Xstream.toXML()`方法,传入要转换的对象即可。 4. 反序列化:将XML字符串转换回Java对象,使用`Xstream.fromXML()`方法,传入XML字符串。 例如,假设有一个简单的User...