`
天空之城
  • 浏览: 402734 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JAVA泛型实体集合转xml .

    博客分类:
  • Java
 
阅读更多
public static String beanListToXml(List<?> list ,Class<?> cls) throws Exception{
		return beanListToXml(list, cls,"yyyy-MM-dd");
	}

	public static String beanListToXml(List<?> list ,Class<?> cls,String pattern) throws Exception{
		StringBuffer sb = new StringBuffer();
		sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>").append("\r\n");
		String className = cls.getSimpleName();
		sb.append("<").append(className).append("List>").append("\r\n");
		Field[] fileds = cls.getDeclaredFields();
		fileds = getFileds(cls,fileds);
		try {
			for(int i=0;i<list.size();i++){
				sb.append("<").append(className).append(">").append("\r\n");
				for(int j = 0;j<fileds.length;j++){
					String filedName = fileds[j].getName();
					String getMethodName = "get"
						+ filedName.substring(0, 1).toUpperCase()
						+ filedName.substring(1);
					Method getMethod = cls.getMethod(getMethodName,
							new Class[] {});
					Object value = getMethod.invoke(list.get(i), new Object[] {});
					String textValue = "";
					if (value instanceof Date) {
						SimpleDateFormat sdf = new SimpleDateFormat(pattern);
						textValue = sdf.format((Date) value);
					}else{
						textValue = Tool.nvl(value);
					}
					sb.append("<").append(filedName).append(">");
					sb.append(chargeStr(textValue));
					sb.append("</").append(filedName).append(">");
					sb.append("\r\n");
				}
				sb.append("</").append(className).append(">").append("\r\n");
			}
			sb.append("</").append(className).append("List>").append("\r\n");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			throw new DataException("实体转换成xml时出错");
		}
		
		return sb.toString();
	}
	
	private static Field[] getFileds(Class<?> cls,Field[] fileds) {
		// TODO Auto-generated method stub
		Field[] result = null;
		Class parent = cls.getSuperclass();
		if(parent != null){
			Field[] pfields = parent.getDeclaredFields();
			result = new Field[fileds.length+pfields.length];
			System.arraycopy(fileds, 0, result, 0, fileds.length);
			
			for(int i=0;i<pfields.length;i++){
				result[fileds.length+i] = pfields[i];
			}
			getFileds(parent, fileds);
		}
		return result;
	}

	private static String chargeStr(String str){
		String result = str;
		result = result.replace("<", "<");
		result = result.replace(">", ">");
		result = result.replace("&", "&");
		result = result.replace("'", "'");
		result = result.replace("\"", """);
		return result;
	}

 

分享到:
评论

相关推荐

    多层集合嵌套的JSON数据转化为Java对象(src.zip)

    - JSON-lib不支持泛型,因此在Java对象中使用`List`时,不能指定具体的类型如`List&lt;SubObject&gt;`。在转换后,需要强转列表元素类型。 - JSON字段名与Java属性名不匹配时,可以通过`@JsonProperty`注解映射。 - `...

    java类与xml之间相互转换实例

    XStream库还支持更复杂的Java对象结构,包括集合、嵌套类和泛型等。通过合理的配置和使用,你可以轻松地处理各种复杂的转换需求。 在实际项目中,XStream通常用于处理XML配置文件,比如Spring框架中的bean配置,...

    Java高手真经 编程基础卷.part1.rar

    Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级...

    Java高手真经 编程基础卷.part3.rar

    Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级...

    Java高手真经 编程基础卷.part4.rar

    Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级...

    Java高手真经 编程基础卷.part2.rar

    Java核心编程:流、多线程、实体类、集合类、正则表达式、XML、属性文件。Java图形编程:AWT(Java2D、JavaSound、Media)、Swing、SWT、Jface。Java网络编程:Applet、Socket/TCP/UDP、NIO、RMI、CORBA。Java高级...

    webservice获取List案例

    综上所述,本案例涉及了WebService接口设计、泛型的使用、XML配置和数据序列化等关键知识点,这对于任何需要通过网络交互数据的Java开发者来说都是重要的技能。通过研究提供的代码和理解其背后的原理,你可以掌握...

    JSON 字符串 与 java 对象的转换

    `json-lib`支持多种类型的Java对象,包括普通Java对象、集合类型等。 #### 三、环境准备 在使用`json-lib`之前,需要先下载并导入对应的jar包。例如,可以通过以下方式添加依赖: ```xml &lt;!-- Maven --&gt; ...

    《Java编程思想》第四版答案

    7. 泛型:Java泛型引入了类型参数,增强了类型安全,避免了不必要的类型转换。泛型在集合框架和自定义数据结构中广泛应用。 8. 反射:Java反射API允许程序在运行时检查和修改自身的结构和行为,这在动态配置、元...

    Java工程师面试题(含答案).pdf

    - Java 5引入的泛型(Generic)、自动装箱拆箱等特性。 - Java 8新增的Lambda表达式和Stream API。 15. 软件开发工具和环境 - Maven、Gradle:Java项目的构建和依赖管理工具。 - Eclipse、IntelliJ IDEA:Java...

    java技术架构.doc

    Java技术架构涵盖了广泛的领域,包括编程基础、核心API、高级特性、图形编程、网络编程、开发环境以及特定的软件工程师技能。以下是对这些知识点的详细解释: 1. **Java 开发环境**: - **JDK**:Java Development...

    java,asp,c#各种面试题

    Java面试知识点: 1. **Java基础**: 包括数据类型、运算符、流程控制语句、数组、字符串、面向对象编程的基本概念(封装、继承、多态)。 2. **类与对象**: 对象的创建、构造器、访问修饰符、this关键字、static...

    javaoop复习.rar

    Java OOP(面向对象编程)是Java编程语言的核心特性,它允许我们以更接近现实世界的方式组织代码。在这个“javaoop复习.rar”压缩包中,虽然没有直接的标签信息,但我们可以推测它包含了一些用于复习Java OOP概念的...

    基于spring MVC 和 MyBatis 泛型的代码生成模板,可以根据自己的需求修改

    泛型在Java编程中是一个强大的特性,它可以提供类型安全的集合类,允许在编译时检查类型,避免了强制类型转换。在Spring MVC和MyBatis的结合中,泛型可以用来创建通用的DAO层,减少代码的重复。例如,你可以创建一个...

    Java开发经验及技巧集大汇总.zip

    1. 泛型:理解泛型的作用,学会在类、接口、方法中使用泛型,提高代码的类型安全性。 2. 注解(Annotation):了解注解的元数据功能,掌握自定义注解和处理器的编写。 3. Lambda表达式:学习函数式编程思想,利用...

    java从入门到精通全过程笔记.doc

    4. **集合框架**:Java集合框架包括List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等。理解它们的特点和使用场景,以及泛型的概念。 5. **输入输出流**:学习文件I/O操作,包括字节流和...

    Java程序猿技术路线图

    Java 核心编程:包括 Java 编程的两大核心功能——Java 输入/输出流和多线程,以及常用的辅助类库——实体类、集合类、正则表达式、XML 和属性文件。 B. Java 图形编程:包括 Sun 的 GUI 库 AWT(Java2D、Java...

    Java技术大系.pdf

    1. **Java技术框架与体系**:本书全面展示了Java技术的框架与体系,包括但不限于Java语言的基础语法、面向对象编程、集合框架、多线程编程、网络编程、异常处理、输入/输出流、反射机制、注解、泛型、枚举、lambda...

Global site tag (gtag.js) - Google Analytics