private void generateSdbx(Object data, int sum) throws IllegalAccessException, DatatypeConfigurationException {
        logger.debug("generate sdbx ...");
        // 获取f对象对应类中的所有属性域
        Field[] fields = sdbx.getClass().getDeclaredFields();
        Map<String, Object> map = getSdbxXmlHeadMap(sum);
        for (Field field : fields) {
            // 对于每个属性，获取属性名
            String varName = field.getName();
            // 获取原来的访问控制权限
            boolean accessFlag = field.isAccessible();
            // 修改访问控制权限
            field.setAccessible(true);
            // 获取属性域类型
            Type fieldType = field.getGenericType();
            if (String.class.equals(fieldType)) {
                Object value = map.get(varName);
                field.set(sdbx, value);
            } else if (BigInteger.class.equals(fieldType)) {
                String value = (String) map.get(varName);
                field.set(sdbx, value == null ? null : BigInteger.valueOf(Integer.valueOf(value)));
            } else if (XMLGregorianCalendar.class.equals(fieldType)) {
                Date value = (Date) map.get(varName);
                field.set(sdbx, convertToXMLGregorianCalendar(value));
            } else if (data.getClass().equals(fieldType)) {
                field.set(sdbx, data);
            }
            // 恢复访问控制权限
            field.setAccessible(accessFlag);
        }
    }