private void parseClassElement(Element element, ParserContext parserContext, List<Map<String, Object>> xmlDataList) {
            String className = element.getAttribute(CLASS_NAME_ATTR).replaceAll("//s+", "");
            if(StringUtils.hasText(className)){
                List<Element> interfaceElts = DomUtils.getChildElementsByTagName(element, INTERFACE_ELEMENT);
                for (Element interfaceElt : interfaceElts) {
                    String description = interfaceElt.getAttribute(DESCRIPTION_ATTR).replaceAll("//s+", "");
                    if(StringUtils.hasText(description)){
                        List<Element> dataElts = DomUtils.getChildElementsByTagName(interfaceElt, DATA_ELEMENT);
                        int dataEltsSize = dataElts.size();
                        String[] datas = new String[dataEltsSize];
                        for (int i = 0; i < dataEltsSize; i++) {
                            String value = DomUtils.getTextValue(dataElts.get(i)).trim();
                            datas[i] = value;
                        }
                        Object[] wrappedDatas = wrapSingleArray(datas);
                        HashMap<String, Object> dataMap = new HashMap<String, Object>();
                        Class<?> clazz = null;
                        try {
                            clazz = Class.forName(className);
                        } catch (ClassNotFoundException e) {
                            throw new RuntimeException(e);
                        }
                        String internalClassName = Type.getInternalName(clazz);
                        
                        String methodName = Util.getMethodNameFromMethodExternalDesc(description);
                        Class<?>[] parameterTypes = Util.getParameterTypesFromMethodExternalDesc(description);
                        
                        Method method;
                        try {
                            method = clazz.getMethod(methodName, parameterTypes);
                        } catch (Exception e) {
                            throw new RuntimeException(e);
                        } 
                        Object[] wrappedParameterTypes = wrapSingleArray(parameterTypes);
                        String methodDesc = Type.getMethodDescriptor(method);
                        Type returnType = Type.getReturnType(methodDesc);
                        Class<?> returnClass = Util.getClass(returnType);
                        
                        dataMap.put("key", className + "." + description);
                        dataMap.put("internalClassName", internalClassName);
                        dataMap.put("className", className);
                        dataMap.put("clazz", clazz);
                        dataMap.put("methodName", methodName);
                        dataMap.put("methodDesc", methodDesc);
                        dataMap.put("returnClass", returnClass);
                        dataMap.put("argumentClasses", wrappedParameterTypes);
                        dataMap.put("datas", wrappedDatas);
                        xmlDataList.add(dataMap);
                    }
                }
            }
        }