`
dontsan
  • 浏览: 41019 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
文章分类
社区版块
存档分类
最新评论

xml 绑定,泛型和反射一例

阅读更多
最近这个项目有很多xml和java class转换的内容。利用XStream,Java的泛型和反射特性做了一个工具类。

方案1.
package webService;

import java.lang.reflect.TypeVariable;
import com.thoughtworks.xstream.XStream;

public class Transformer2<E> {

	Class<E> e;

	public static void main(String[] args) {
		
		Transformer2<RetailPriceRequest> t = new Transformer2<RetailPriceRequest>();

		RetailPriceRequest o = new RetailPriceRequest();
		o.setCompany("James dealer");
		o.setSku("203948");
		o.setQuantity(10);

		String xml = t.getAsString(o);
		System.out.println(xml);
		System.out.println(t.getAsObject(xml).toString());
		
	}

	@SuppressWarnings("unchecked")
	public Transformer2() {
	       TypeVariable<?> type = getClass().getTypeParameters()[0];      
	         e= (Class<E>) type.getClass();
	}
	
	@SuppressWarnings("unchecked")
	public E getAsObject(String xml) {
		XStream xstream = new XStream();
		xstream.alias(e.getSimpleName(),e);
		return (E) xstream.fromXML(xml);	
	}
	
	public String getAsString(Object o) {
		XStream xstream = new XStream();
		xstream.alias(e.getSimpleName(), e);
		return xstream.toXML(o);
	}

}


方案2.

package webService;

import com.thoughtworks.xstream.XStream;

public class Transformer {

	// public E e;

	Class cls;

	public static void main(String[] args) {

		Class cls = RetailPriceRequest.class;
		Transformer t = new Transformer(cls);

		RetailPriceRequest o = new RetailPriceRequest();
		o.setCompany("James dealer");
		o.setSku("203948");
		o.setQuantity(10);

		String xml = t.getAsString(o);
		System.out.println(xml);
		System.out.println(t.getAsObject(xml).toString());


	}

	public Transformer(Class cls) {
		this.cls = cls;
	}

	public Transformer() {
	}

	public Object getAsObject(String xml) {
		return getAsObject(xml, cls);
	}

	public String getAsString(Object o) {
		return getAsString(o, cls);
	}

	public Object getAsObject(String xml, Class cls) {
		XStream xstream = new XStream();
		xstream.alias(cls.getSimpleName(), cls);
		return xstream.fromXML(xml);
	}

	public String getAsString(Object o, Class cls) {
		XStream xstream = new XStream();
		xstream.alias(cls.getSimpleName(), cls);
		return xstream.toXML(o);
	}

}



分享到:
评论

相关推荐

    xstream+xmlpull xml to bean &&bean to xml

    在XStream中,你可以定义一个Java类,然后通过XStream实例将其实例化后的对象转换成XML字符串。同样,也可以从XML字符串反向创建出对应的Java对象。XStream通过注解或者配置来处理复杂的对象结构,如嵌套对象、集合...

    ASP.NET网战设计实例&C#与ASP.NET程序设计&c#&vb语言&XML

    XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。在ASP.NET中,XML常用于配置文件、数据交换、数据存储等。开发者需要了解XML的基本结构、命名空间、DTD(文档类型定义)或XSD(XML Schema...

    java实用编程100例

    12. **XML处理**: 如何使用DOM和SAX解析XML文档,以及使用JAXB进行对象与XML之间的绑定。 13. **JavaFX GUI编程**: 部分实例可能涉及图形用户界面的构建,如JavaFX提供的组件和布局管理器的使用。 14. **注解...

    c#实用编程百例-第5章 (一共6张一百个案例非常的管用)

    12. **XML和JSON处理**:学习如何解析和生成XML和JSON数据,使用XmlDocument、XmlNode、Json.NET等库。 13. **反射**:了解如何在运行时动态地获取和操作类型信息,如创建对象、调用方法等。 14. **异步编程**:...

    CXF关于Aegis的简单示例

    而Aegis是CXF的一个组件,主要用于支持JavaBeans到XML的绑定,以及XML到JavaBeans的反向绑定。这个组件对于处理简单的Java对象到XML的映射非常有用。 在"CXF关于Aegis的简单示例"中,我们可能涉及到以下几个关键...

    Visual Basic.NET应用编程150例

    《Visual Basic.NET应用编程150例》是一本专注于教授如何使用Visual Basic.NET进行实际编程的书籍。在.NET框架的支持下,Visual Basic.NET已经成为一种强大且现代化的编程语言,广泛应用于开发各种桌面、Web和移动...

    C# 实用编程十例

    【C# 实用编程十例】是一份针对C#编程语言的应用实例教程,结合了Visual Studio 2005(VS2005)开发环境,涵盖了C#语言的多种核心特性和常见应用场景。这份教程可能包括了从基础操作到高级功能的各种示例,旨在帮助...

    C#精彩编程50例码源

    《C#精彩编程50例码源》是一个深入学习C#编程语言的宝贵资源,它包含了一系列精心挑选的示例代码,旨在帮助开发者提升技能,理解C#的关键特性和应用场景。下面,我们将对这些示例进行详细的解读和分析。 1. **面向...

    C# 实用编程百例

    《C#实用编程百例》是一本旨在帮助开发者掌握C#编程技巧的实践教程,它提供了丰富的实例,覆盖了从基础到高级的各种编程概念。这个配套光盘资料将这些实例以源码的形式呈现,便于读者深入理解并进行实际操作。 在C#...

    c#.NET应用编程150例

    《C#.NET应用编程150例》是一本专注于C#.NET编程实践的教程,它包含了大量的实例,旨在帮助读者深入理解和掌握C#.NET编程语言的精髓。这本教程不仅覆盖了基础语法,还深入到高级特性,为开发者提供了一个全面的学习...

    C++.NET150例

    《C++.NET150例》是一份专为学习C++.NET编程的实践教程,它包含150个精心设计的实例,旨在帮助初学者快速理解并掌握C++.NET编程的核心概念和技术。C++.NET是Microsoft.NET框架下的一种强大编程语言,结合了C++的高效...

    C#时尚编程100例

    4. **泛型**:C#的泛型允许在类、接口和方法中定义类型参数,提高代码的复用性和安全性。 5. **异常处理**:学习如何使用try-catch块进行错误处理,了解不同类型的异常,以及throw关键字的使用。 6. **LINQ...

    C#经典编程200例(吉林明日出版社)

    Windows Forms相对简单,而WPF提供更强大的图形渲染和数据绑定功能。 12. **ASP.NET**:用于构建Web应用程序,包括ASP.NET Core(跨平台)和传统的ASP.NET,支持MVC(模型-视图-控制器)和Web API模式。 13. **...

    C#的100个经典例题

    4. **泛型**:C#的泛型允许创建可重用的类型安全组件,例题可能包括泛型类、泛型接口、泛型方法的实现和使用。 5. **异常处理**:通过try-catch块进行错误处理是程序健壮性的重要组成部分。例题可能会设计到如何抛...

    C# 经典案例源码5(81例)详细注释

    在本资源"C# 经典案例源码5(81例)详细注释"中,我们聚焦于C#编程语言的应用实践,通过一系列经典案例,深入理解C#的核心特性和编程技巧。这些案例覆盖了丰富的编程场景,有助于提升开发者在实际项目中的能力。 1....

    C#開發範例集合

    Windows Forms是较老但仍然广泛使用的UI框架,而WPF提供了更现代、更美观的界面设计能力,支持数据绑定和XAML。 12. **ASP.NET**:用于开发Web应用程序的技术,包括ASP.NET Core和传统的ASP.NET。学习如何创建Web...

    c#编程25例,DOC版的,易看易学

    "C#编程25例,DOC版的,易看易学"这个资源正是一份很好的学习资料,它提供了二十五个精心设计的代码示例,帮助你逐步熟悉C#的语法和功能。下面,我们将深入探讨这些例子所涵盖的关键知识点。 1. **控制台写入**: 在...

    c#实战100例

    《C#实战100例》是一本针对C#编程语言的实践教程,它通过100个具体的实例,从初级到高级,逐步深入地介绍了C#编程的各种技术和应用场景。这本书旨在帮助读者不仅掌握C#的基本语法,还能理解并运用到实际项目中,提升...

    Visual C#.NET 应用编程150例源码

    《Visual C#.NET 应用编程150例源码》是一份专为学习和实践C#.NET编程的宝贵资源,包含了丰富的实例代码,旨在帮助开发者深入理解和掌握C#.NET编程语言的应用技巧。通过这些实例,你可以学习到如何在.NET框架下使用...

Global site tag (gtag.js) - Google Analytics