最近这个项目有很多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中,你可以定义一个Java类,然后通过XStream实例将其实例化后的对象转换成XML字符串。同样,也可以从XML字符串反向创建出对应的Java对象。XStream通过注解或者配置来处理复杂的对象结构,如嵌套对象、集合...
XML(Extensible Markup Language)是一种标记语言,用于存储和传输数据。在ASP.NET中,XML常用于配置文件、数据交换、数据存储等。开发者需要了解XML的基本结构、命名空间、DTD(文档类型定义)或XSD(XML Schema...
12. **XML处理**: 如何使用DOM和SAX解析XML文档,以及使用JAXB进行对象与XML之间的绑定。 13. **JavaFX GUI编程**: 部分实例可能涉及图形用户界面的构建,如JavaFX提供的组件和布局管理器的使用。 14. **注解...
12. **XML和JSON处理**:学习如何解析和生成XML和JSON数据,使用XmlDocument、XmlNode、Json.NET等库。 13. **反射**:了解如何在运行时动态地获取和操作类型信息,如创建对象、调用方法等。 14. **异步编程**:...
而Aegis是CXF的一个组件,主要用于支持JavaBeans到XML的绑定,以及XML到JavaBeans的反向绑定。这个组件对于处理简单的Java对象到XML的映射非常有用。 在"CXF关于Aegis的简单示例"中,我们可能涉及到以下几个关键...
《Visual Basic.NET应用编程150例》是一本专注于教授如何使用Visual Basic.NET进行实际编程的书籍。在.NET框架的支持下,Visual Basic.NET已经成为一种强大且现代化的编程语言,广泛应用于开发各种桌面、Web和移动...
【C# 实用编程十例】是一份针对C#编程语言的应用实例教程,结合了Visual Studio 2005(VS2005)开发环境,涵盖了C#语言的多种核心特性和常见应用场景。这份教程可能包括了从基础操作到高级功能的各种示例,旨在帮助...
《C#精彩编程50例码源》是一个深入学习C#编程语言的宝贵资源,它包含了一系列精心挑选的示例代码,旨在帮助开发者提升技能,理解C#的关键特性和应用场景。下面,我们将对这些示例进行详细的解读和分析。 1. **面向...
《C#实用编程百例》是一本旨在帮助开发者掌握C#编程技巧的实践教程,它提供了丰富的实例,覆盖了从基础到高级的各种编程概念。这个配套光盘资料将这些实例以源码的形式呈现,便于读者深入理解并进行实际操作。 在C#...
《C#.NET应用编程150例》是一本专注于C#.NET编程实践的教程,它包含了大量的实例,旨在帮助读者深入理解和掌握C#.NET编程语言的精髓。这本教程不仅覆盖了基础语法,还深入到高级特性,为开发者提供了一个全面的学习...
《C++.NET150例》是一份专为学习C++.NET编程的实践教程,它包含150个精心设计的实例,旨在帮助初学者快速理解并掌握C++.NET编程的核心概念和技术。C++.NET是Microsoft.NET框架下的一种强大编程语言,结合了C++的高效...
4. **泛型**:C#的泛型允许在类、接口和方法中定义类型参数,提高代码的复用性和安全性。 5. **异常处理**:学习如何使用try-catch块进行错误处理,了解不同类型的异常,以及throw关键字的使用。 6. **LINQ...
Windows Forms相对简单,而WPF提供更强大的图形渲染和数据绑定功能。 12. **ASP.NET**:用于构建Web应用程序,包括ASP.NET Core(跨平台)和传统的ASP.NET,支持MVC(模型-视图-控制器)和Web API模式。 13. **...
4. **泛型**:C#的泛型允许创建可重用的类型安全组件,例题可能包括泛型类、泛型接口、泛型方法的实现和使用。 5. **异常处理**:通过try-catch块进行错误处理是程序健壮性的重要组成部分。例题可能会设计到如何抛...
在本资源"C# 经典案例源码5(81例)详细注释"中,我们聚焦于C#编程语言的应用实践,通过一系列经典案例,深入理解C#的核心特性和编程技巧。这些案例覆盖了丰富的编程场景,有助于提升开发者在实际项目中的能力。 1....
Windows Forms是较老但仍然广泛使用的UI框架,而WPF提供了更现代、更美观的界面设计能力,支持数据绑定和XAML。 12. **ASP.NET**:用于开发Web应用程序的技术,包括ASP.NET Core和传统的ASP.NET。学习如何创建Web...
"C#编程25例,DOC版的,易看易学"这个资源正是一份很好的学习资料,它提供了二十五个精心设计的代码示例,帮助你逐步熟悉C#的语法和功能。下面,我们将深入探讨这些例子所涵盖的关键知识点。 1. **控制台写入**: 在...
《C#实战100例》是一本针对C#编程语言的实践教程,它通过100个具体的实例,从初级到高级,逐步深入地介绍了C#编程的各种技术和应用场景。这本书旨在帮助读者不仅掌握C#的基本语法,还能理解并运用到实际项目中,提升...
《Visual C#.NET 应用编程150例源码》是一份专为学习和实践C#.NET编程的宝贵资源,包含了丰富的实例代码,旨在帮助开发者深入理解和掌握C#.NET编程语言的应用技巧。通过这些实例,你可以学习到如何在.NET框架下使用...