//主题XmlToObject类 带测试方法
package com.sram.work;import java.lang.reflect.Field;import java.lang.reflect.Method;import com.sram.beans.Book;import com.sram.beans.User;public class XmlToObject { public static void main(String[] args) throws Exception { String str1 = "";//字段1 Object obj1 = XmlToObject.xml2Object(str1, Book.class); System.out.println(obj1); String str = " 天龙八部 金庸 12.0 人民日报出版社 未出借 ";//字段2 Object obj = XmlToObject.xml2Object(str, User.class); System.out.println(obj); }//解析字符串,将字符串反射到对应类中属性 public static Object xml2Object(String xml, Class c) throws Exception { Object obj = c.newInstance();// Object obj = new User(); Field[] fields = c.getDeclaredFields();//反射获取属性 for (Field field : fields) { String fieldValue = getValue(xml, field); String methodName = "set" + field.getName().substring(0, 1).toUpperCase() + field.getName().substring(1); Method method = c.getMethod(methodName, field.getType());//反射获取方法 if (field.getType().getSimpleName().equals("String") && fieldValue != "") method.invoke(obj, fieldValue); if (field.getType().getSimpleName().equals("int") && fieldValue != "") method.invoke(obj, Integer.parseInt(fieldValue)); if (field.getType().getSimpleName().equals("char") && fieldValue != "") { char[] temp = fieldValue.toCharArray(); method.invoke(obj, temp[0]); } if (field.getType().getSimpleName().equals("double") && fieldValue != "") method.invoke(obj, Double.parseDouble(fieldValue)); } return obj; }//分割字符串 public static String getValue(String xml, Field field) { String sb = "<" + field.getName() + ">"; String se = " "; int begin = xml.indexOf(sb) + field.getName().length() + 2; int end = xml.indexOf(se); String value = ""; if (begin < end) value = xml.substring(begin, end); return value; }} 路飞 123 12 M
//反射Book类
package com.sram.beans;public class Book { private String name;// 书名 private String author;// 作者 private double price;// 价格 private String cbs;// 出版社 private String state;// 状态 @Override public String toString() { return " 图书名称=" + name + ", 作者=" + author + ", 价格=" + price + ", 出版社=" + cbs + ", 状态=" + state; } public Book() { super(); // TODO Auto-generated constructor stub } public Book(String name, String author, double price, String cbs, String state) { super(); this.name = name; this.author = author; this.price = price; this.cbs = cbs; this.state = state; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAuthor() { return author; } public void setAuthor(String author) { this.author = author; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public String getCbs() { return cbs; } public void setCbs(String cbs) { this.cbs = cbs; } public String getState() { return state; } public void setState(String state) { this.state = state; }}
//反射User类
package com.sram.beans;public class User { private String username; private String password; private int age; private char sex; public User() { super(); } @SuppressWarnings("unused") private User(String username) { super(); this.username = username; } public User(String username, String password) { super(); this.username = username; this.password = password; } @SuppressWarnings("unused") private User(String username, String password, int age) { super(); this.username = username; this.password = password; this.age = age; } private User(String username, String password, int age, char sex) { super(); this.username = username; this.password = password; this.age = age; this.sex = sex; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + ", age=" + age + ", sex=" + sex + "]"; } public char getSex() { return sex; } public void setSex(char sex) { this.sex = sex; } public void setPassword(String password) { this.password = password; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @SuppressWarnings("unused") private void method() { System.out.println("method方法"); } public void fun() { System.out.println("fun方法"); } public int add(int a, int b) { return a + b; } public static void update() { System.out.println("静态方法"); }}