public String handle(String xml) throws Exception {
        if (xml == null || xml.trim().isEmpty()) return Constant.NULL_STRING;

        if (xml.contains(Constant.TEXT_MSG_SIGN)) {
            List<String> list = illegalMessageHandler.splitTextMsgTo3Parts(xml);
            boolean isIllegal = illegalMessageHandler.ifTextMsgContentIllegal(list.get(1));
            if (isIllegal) return illegalMessageHandler.handle(list);
        }

        if (xml.contains(EventType.EVENT_SIGN)) {
            return eventHandleFactory.hand(xml);
        }

        String messageType = MessageTypePicker.pick(xml);
        Class<MessageHandler> specificHandler = MessageType.messageHandlerMap.get(messageType);

        if (specificHandler == null) return Constant.NULL_STRING;

        MessageHandler handler = specificHandler.newInstance();
        return handler.handle(xml);
    }