public class BeansToXml {
public static void main(String args[]) throws Exception{
User user = new User();
user.setName("李四");
user.setSex("男");
user.setPhone("138138");
user.setAddr("北京");
//1.生成xml文件
String filePath = new BeansToXml().createXml(user);// 根据JavaBean生成Xml文件
//2.读生成的xml文件。
// User b = new BeansToXml().getBeanFromXml(filePath,user);
}
public String createXml(final Object obj) throws Exception{
String clsName = obj.getClass().getSimpleName();
System.out.println(clsName);
// 根据类名生成root
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement(clsName);
root.addComment(obj.getClass().getName() + " 的xml");// 生成注释
// bean属性
Element fieldsElems = root.addElement("fields");
Class cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
String fieldName = "";
for (Field f : fields) {
f.setAccessible(true);
fieldName = f.getName();
Element element = fieldsElems.addElement(fieldName);
byte[] items = fieldName.getBytes(); // 把字段名第一个大写,以便用getName()方法。
items[0] = (byte) ((char) items[0] - 'a' + 'A');
String upFieldName = new String(items);
// System.out.println(upFieldName);
Method method = cls.getDeclaredMethod("get" + upFieldName);
element.setText((String) method.invoke(obj));
}
// 生成xml
String url = BeansToXml.class.getClassLoader().getResource("//").getPath();
URI uri = new URI(url);//这里是为了 空格路径bug MyEclipse 9 中间有个空格。不用这个会报错找不到文件。
String simpleName = obj.getClass().getSimpleName();
String filename = uri.getPath()+simpleName +".xml";
System.out.println(filename);
XMLWriter writer;
try {
writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(doc);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}
public static void main(String args[]) throws Exception{
User user = new User();
user.setName("李四");
user.setSex("男");
user.setPhone("138138");
user.setAddr("北京");
//1.生成xml文件
String filePath = new BeansToXml().createXml(user);// 根据JavaBean生成Xml文件
//2.读生成的xml文件。
// User b = new BeansToXml().getBeanFromXml(filePath,user);
}
public String createXml(final Object obj) throws Exception{
String clsName = obj.getClass().getSimpleName();
System.out.println(clsName);
// 根据类名生成root
Document doc = DocumentHelper.createDocument();
Element root = doc.addElement(clsName);
root.addComment(obj.getClass().getName() + " 的xml");// 生成注释
// bean属性
Element fieldsElems = root.addElement("fields");
Class cls = obj.getClass();
Field[] fields = cls.getDeclaredFields();
String fieldName = "";
for (Field f : fields) {
f.setAccessible(true);
fieldName = f.getName();
Element element = fieldsElems.addElement(fieldName);
byte[] items = fieldName.getBytes(); // 把字段名第一个大写,以便用getName()方法。
items[0] = (byte) ((char) items[0] - 'a' + 'A');
String upFieldName = new String(items);
// System.out.println(upFieldName);
Method method = cls.getDeclaredMethod("get" + upFieldName);
element.setText((String) method.invoke(obj));
}
// 生成xml
String url = BeansToXml.class.getClassLoader().getResource("//").getPath();
URI uri = new URI(url);//这里是为了 空格路径bug MyEclipse 9 中间有个空格。不用这个会报错找不到文件。
String simpleName = obj.getClass().getSimpleName();
String filename = uri.getPath()+simpleName +".xml";
System.out.println(filename);
XMLWriter writer;
try {
writer = new XMLWriter(new FileWriter(new File(filename)));
writer.write(doc);
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
return filename;
}