JAVA-使用反射为任意对象生成XML
2017-11-23 22:29
501 查看
提示
目前只支持基本类型和封装类型package ztf.question1; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileWriter; public class Application { //存在问题,没有模仿缩进 public static void main(String[] args){ Person person=new Person(); person.setName("ddd"); person.setAge(23); Address address=new Address("chonqqing","Hong Guang Street"); person.setAddress(address); System.out.println(ObjectToXml.writeXML(person.getClass(),person)); } }
package ztf.question1; public class Address { private String province; private String street; public Address() { } public Address(String pro,String street){ this.province=pro; this.street=street; } public String getProvince(){ return this.province; } public void setProvince(String province){ this.province=province; } public String getStreet(){ return this.street; } public void setStreet(String street){ this.street=street; } }
package ztf.question1; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileWriter; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ObjectToXml { public static String writeXML(Class class1,Object obj){ StringBuilder stringBuilder=new StringBuilder(); try{ stringBuilder.append("<"+class1.getName()+">\n"); Field[] fields = class1.getDeclaredFields(); for(Field field:fields) { field.setAccessible(true); Class<?> type = field.getType(); if(type.isPrimitive()||type==String.class) { stringBuilder.append("<"+field.getName()+">"); Method m = (Method) class1.getMethod( "get" + getMethodName(field.getName())); stringBuilder.append(m.invoke(obj)); stringBuilder.append("</"+field.getName()+">\n"); }else { Method m = (Method) class1.getMethod( "get" + type.getSimpleName()); stringBuilder.append(writeXML(field.getType(),m.invoke(obj))); } } stringBuilder.append("</"+class1.getName()+">\n"); return stringBuilder.toString(); }catch(Exception e){ e.printStackTrace(); } return null; } private static String getMethodName(String name) { // TODO Auto-generated method stub return name.substring(0, 1).toUpperCase() + name.substring(1); } }
package ztf.question1; public class Person { private String name; private int age; private Address address; public Person(){ this.name=""; } public String getName(){ return this.name; } public void setName(String name){ this.name=name; } public int getAge(){ return this.age; } public void setAge(int age){ this.age=age; } public Address getAddress(){ return this.address; } public void setAddress(Address address){ this.address=address; } }
相关文章推荐
- JAVA基础知识之JVM-——使用反射生成并操作对象
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 使用JAXB时,xml与java对象互转以及初始情况下直接由模板xml生成javabean
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- 利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合
- java利用dom4j对输入的任意对象生成xml文件
- 黑马程序员-Java中使用反射生成并操作对象
- java利用dom4j对输入的任意对象生成xml文件
- Digester 按照xml生成Java对象
- java使用jdom架包解析xml字符串dom原理并保存map对象
- [NET]Net中的反射使用入门(根据类名和函数名,生成和调用对象的成员函数) (转)
- xmlbeans-2.5.0 生成与xml结构相同的javabean对象
- 使用Java提供的类生成XML例子
- 使用java反射中的getMethod,invoke方法调用对象方法的实例
- 使用 XStream 把 Java 对象序列化为 XML
- java使用XSL+XML生成HTML文件
- 通过java反射获取任意对象的字段名及字段值
- 使用XStream把Java 对象序列化为XML!!!
- java编程 使用XSL+XML生成HTML文件