- public static Alarm valueOf(String xmlString) {\r
- Element element = null;\r
- try {\r
- StringReader sb = new StringReader(xmlString);\r
- element = new SAXBuilder().build(sb).getRootElement();\r
- sb.close();\r
- } catch (Exception e) {\r
- throw new RuntimeException(e);\r
- }\r
-\r
- Alarm alarm = new Alarm();\r
- @SuppressWarnings("unchecked")\r
- List<Attribute> list = element.getAttributes();\r
- for (Attribute attr : list) {\r
- String attrName = attr.getName();\r
- try {\r
- Field field = Alarm.class.getDeclaredField(attrName);\r
- if (!attrName.endsWith("Time")) {\r
- String type = field.getType().getSimpleName();\r
- if (type.equals("byte")) {\r
- field.set(alarm, Byte.parseByte(attr.getValue()));\r
- } else if (type.equals("long")) {\r
- field.set(alarm, Long.parseLong(attr.getValue()));\r
- } else if (type.equals("String")) {\r
- field.set(alarm, attr.getValue());\r
- } else {\r
- throw new RuntimeException("unknow attr type: " + type.toString());\r
- }\r
- } else {\r
- Date date = new Date();\r
- date.setTime(Long.parseLong(attr.getValue()));\r
- field.set(alarm, date);\r
- }\r
- } catch (Exception e) {\r
- throw new RuntimeException(e);\r
- }\r
- }\r
-\r
- return alarm;\r
- }\r
-\r