`
qq125922714
  • 浏览: 36519 次
社区版块
存档分类
最新评论

xml格式字符串与java对象互转

阅读更多

   
import java.lang.reflect.Field;
import java.util.List;

import com.thoughtworks.xstream.XStream;

public class XmlUtil {
	// 所有需要注册的类的配置,
	public static final String CONFIGFILE = new GetClassPath()
			.getMyConfigPath()
			+ "/xml.prop";
	
	private static XStream xs = null;
	
	private static XmlUtil xmlUtil = null;

	private XmlUtil() {
		try {
			// 获取所有需要与处理的java完整名
			List list = FileUtil.readFile(CONFIGFILE);
			
			//初始化xs
			xs = alias(list);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 获得实例
	 * @return
	 */
	public static synchronized XmlUtil getInstance() {
		
		if(null == xmlUtil){
			xmlUtil = new XmlUtil();
		}
		
		return xmlUtil;
	}

	/**
	 * 根据类名做反射
	 * 
	 * @param list
	 *            类完整名
	 * @return
	 * @throws ClassNotFoundException
	 */
	public XStream alias(List list) throws ClassNotFoundException {
		XStream xs = new XStream();
		for (int i = 0; i < list.size(); i++) {
			Object obj;
			try {
				obj = Class.forName((String) list.get(i)).newInstance();
				Class zz = obj.getClass();
				aliasAtt(xs, zz);
			} catch (InstantiationException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		return xs;
	}

	/**
	 * 对类进行xml解析配置
	 * 
	 * @param xs
	 * @param z
	 *            class对象
	 */
	public void aliasAtt(XStream xs, Class z) {
		if (null == z) {
			return;
		}

		// 类名注册
		xs.alias(z.getSimpleName(), z);
		Field[] field = z.getDeclaredFields();
		// 类中成员变量注册,继承的不注册
		for (int i = 0; i < field.length; i++) {
			xs.aliasField(field[i].getName(), z, field[i].getName());
		}
	}
	
	/**
	 * xml 格式字符串转换为对象
	 * @param str
	 * @return
	 */
	public Object xmlToObject(String str) {
		return xs.fromXML(str);
	}
	
	/**
	 * 对象转换为xml格式字符串
	 * @param obj
	 * @return
	 */
	public String objToXml(Object obj) {
		return xs.toXML(obj);
	}
}

FileUtil.readFile()方法如下

/**
	 * 读取文件
	 * 
	 * @param filePath
	 *            文件完整名
	 * @return 文件内容
	 * @throws IOException
	 */
	public static List readFile(String filePath) {

		List list = new ArrayList();

		FileInputStream fs = null;
		InputStreamReader isr = null;
		BufferedReader br = null;

		try {
			fs = new FileInputStream(filePath);

			isr = new InputStreamReader(fs);

			br = new BufferedReader(isr);

			String data = "";
			while ((data = br.readLine()) != null) {
				list.add(data.trim());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				if (br != null)
					br.close();
				if (isr != null)
					isr.close();

				if (fs != null)
					fs.close();

			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		return list;
	}

Test
         Printdata pd = new Printdata();
	pd.setPrintFileList(printFileList);
	pd.setAuto("1");
	pd.setBillReceiver("billReceiver");
	pd.setCustId("cust_id");
	pd.setYear("2011");
	pd.setMonth("11");
	List list = FileUtil.readFile(XmlUtil.CONFIGFILE);
	XmlUtil xmlUtil = XmlUtil.getInstance();
	String xml = xmlUtil.objToXml(pd);//对象至xml
	System.out.println(xml);
         Printdata obj = (Printdata)xmlUtil.xmlToObject(xml);//xml至对象

需要的jar包见附件
 
   
     
       

             
  • xpp3_min-1.1.4c.jar (24.4 KB)

  •          
             
  • 下载次数: 1

  •        

     
   
     
       

             
  • xstream-1.3.jar (401.5 KB)

  •          
             
  • 下载次数: 1

  •        

     
   
   
 
0
0
分享到:
评论

相关推荐

    实体类生成XML格式字符串

    在Java编程中,有时我们需要将实体类对象转换成XML格式的字符串,这在数据交换、存储或网络传输中非常常见。这个过程通常涉及到对象序列化和XML处理技术。本篇文章将详细讲解如何根据实体类生成XML格式的字符串,并...

    2017XML字符串转对象Object 实现工具

    实现 XML字符串转VO对象的实现 1.0:标签读取,属性读取,List类型标签实现 以下是 测试说明 原XML: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;HEADER NAME="HEADERname" name_cn="头名称"&gt;标签text...

    java解析xml字符串

    1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这是为了将字符串转换为可以被SAXBuilder读取的形式。接着,使用`InputSource`封装`StringReader`,以便SAXBuilder能够正确识别并解析XML数据。 2...

    xml格式的字符串转换成List

    当我们需要将XML格式的字符串转换为List对象时,这通常涉及到数据解析的过程。这篇博客“xml格式的字符串转换成List”提供了相关的方法和步骤,以下是对这个主题的详细讲解。 首先,理解XML字符串。XML字符串是由一...

    java对象转换为json字符串或字符串数组

    在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    将string类型xml字符串转为json字符串

    总结来说,将string类型的XML字符串转换为JSON字符串是通过解析XML字符串并构建相应的JSON对象来完成的。这个过程通常需要借助特定的库,如Java中的`org.json`。理解XML和JSON的结构差异,以及如何利用这些库进行...

    xml和java对象互转

    Java作为一种强类型、面向对象的编程语言,有时需要将XML数据转换为Java对象,或者将Java对象转换为XML格式的数据,以实现数据的序列化和反序列化。这种转换过程对于数据交换和持久化至关重要。 在Java中,XStream...

    将对象(java bean)转换为xml字符串

    总的来说,XStream库提供了强大的功能来处理Java对象与XML之间的转换,它简化了开发者的工作,使得数据交换更加便捷。在实际开发中,我们可以根据项目需求灵活运用XStream,以满足各种序列化和反序列化的需求。通过...

    JSON 字符串 与 java 对象的转换

    #### 四、Java对象与JSON字符串的转换 #### 1. Java对象列表转换为JSON对象数组 ```java import net.sf.json.JSONArray; import net.sf.json.JSONObject; List&lt;User&gt; userList = ...; // 假设这里已经有了User...

    java反射机制 字符串——java对象

    在Java中,将Java对象的数据封装成XML格式的字符串,通常涉及到对象序列化的过程。对象序列化是将对象的状态转换为字节流,以便存储或在网络上传输。这个过程可以通过实现`java.io.Serializable`接口来完成。反序列...

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

    有了这个Java类,你可以使用Unmarshaller将XML字符串或文件解析为Java对象: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import java.io.File; public class Main { ...

    java 中HttpClient传输xml字符串实例详解

    然后,我们使用Java的JAXB(Java Architecture for XML Binding)技术将这个对象转换成XML格式的字节数组流。以下是如何实现这一过程的Java代码: ```java import javax.xml.bind.JAXBContext; import javax.xml....

    java xml和map互转

    总结,使用DOM4J库,我们可以方便地在Java中实现XML与Map之间的互转。这不仅适用于简单的键值对,还支持嵌套结构、属性以及有无根节点的情况。在实际项目中,可以根据具体需求对这些方法进行适当的调整和优化。

    JAVA对象转换成XML(CDATA)

    [CDATA[ 文本内容 ]]&gt;`,其中"文本内容"部分不能包含字符串"]]&gt;",以防止提前结束CDATA段。同时,CDATA段不能嵌套,也就是说,一个CDATA段内部不能再有另一个CDATA段。 要将Java对象转换成XML并包含CDATA,我们可以...

    json_lib使用实例:java对象与json字符串的互转

    这个库提供了丰富的API,使得我们可以轻松地将Java对象转化为JSON字符串,以及将JSON字符串反序列化为Java对象。 ### JSON对象与Java对象的转换 1. **JSON字符串转Java对象** 使用`json-lib`,我们可以将JSON...

    java对象转换成xml格式

    JAXB是Java SE的一部分,它提供了将Java对象直接转换为XML文档,以及从XML文档反序列化回Java对象的能力。首先,你需要为要转换的对象创建对应的Java类,并使用`@XmlRootElement`、`@XmlElement`等注解来指定XML...

    java对象与JSON字符串互转jar,及其用法

    Java对象与JSON字符串之间的转换是Java开发中常见的需求,特别是在处理前后端交互或者存储数据时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。本...

    map/list集合转化成xml字符串 xml字符串转化成map/list集合

    首先,让我们探讨`Map`集合转成XML字符串的过程。一个`Map`对象存储键值对,可以使用各种库如`JAXB (Java Architecture for XML Binding)`、`DOM (Document Object Model)`或`SAX (Simple API for XML)`来实现转换。...

    xStream 实现xml与 java对象的转换

    xStream库的核心概念是“映射”,它通过创建一个映射关系,将Java对象与XML元素和属性对应起来。这使得我们可以轻松地将Java对象转换为XML文档,反之亦然。这个过程对于处理复杂的对象结构尤其有用,因为xStream能够...

    java XML转成LIST可以转成指定的类数组

    使用JAXB,我们可以很容易地将XML字符串或文件转换为相应的Java对象列表。以下是一个示例方法: ```java import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind....

Global site tag (gtag.js) - Google Analytics