code: @SuppressWarnings("unchecked")
      private void cachingXmlZealots() {
          Map<String, String> xmlMaps = XmlContext.INSTANCE.getXmlPathMap();
  
          // 遍历所有的xml文档，将每个zealot节点缓存到ConcurrentHashMap内存缓存中
          for (Map.Entry<String, String> entry: xmlMaps.entrySet()) {
              String nameSpace = entry.getKey();
              String filePath = entry.getValue();
  
              // 根据文件路径获取对应的dom4j Document对象.
              Document doc = XmlNodeHelper.getDocument(filePath);
              if (doc == null) {
                  throw new ConfigNotFoundException("注意：未找到配置文件中xml对应的dom4j Document文档,nameSpace为:" + nameSpace);
              }
  
              // 获取该文档下所有的zealot元素,
              List<Node> zealotNodes = doc.selectNodes(ZealotConst.ZEALOT_TAG);
              for (Node zealotNode: zealotNodes) {
                  String zealotId = XmlNodeHelper.getNodeText(zealotNode.selectSingleNode(ZealotConst.ATTR_ID));
                  if (StringHelper.isBlank(zealotId)) {
                      throw new NodeNotFoundException("该xml文件中有zealot节点的zealotId属性为空，请检查！文件为:" + filePath);
                  }
  
                  // zealot节点缓存到Map中，key是由nameSpace和zealot id组成,用"@@"符号分隔,value是zealotNode
                  String zealotKey = StringHelper.concat(nameSpace, ZealotConst.SP_AT, zealotId);
                  AbstractZealotConfig.getZealots().put(zealotKey, zealotNode);
              }
          }
      }
docs: 将每个zealotxml配置文件的key和文档缓存到ConcurrentHashMap内存缓存中.