//主题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 = "<Book><name>天龙八部</name><author>金庸</author><price>12.0</price><cbs>人民日报出版社</cbs><state>未出借</state></Book>";//字段1 Object obj1 = XmlToObject.xml2Object(str1,Book.class); System.out.println(obj1); String str = "<User><username>路飞</username><password>123</password><age>12</age><sex>M</sex></User>";//字段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 = "</" + field.getName() + ">"; 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; } }
//反射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,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("静态方法"); } }
原文地址:https://www.jb51.cc/xml/293942.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。