Пример #1
0
  /**
   * Parse AppConfig.xml
   *
   * @param baseConfig
   * @param configFile
   * @return
   * @throws Exception
   */
  @SuppressWarnings("unchecked")
  public List<AppConfig> parsexml(AppConfig baseConfig, File configFile) throws Exception {
    assert baseConfig != null;
    List<AppConfig> configs = Lists.newArrayList();
    if (null == configFile || !configFile.exists()) {
      baseConfig.setStatus(AppConstants.STATUS_CONFIG_ERROR);
      baseConfig.setStatusString("config file not found");
      configs.add(baseConfig);
      return configs;
    }

    String configString = FileTool.readFileToString(configFile, "utf-8");
    Document doc = null;

    try {
      doc = DocumentHelper.parseText(configString);
    } catch (DocumentException e) {
      e.printStackTrace();
      baseConfig.setStatus(AppConstants.STATUS_CONFIG_ERROR);
      baseConfig.setStatusString(e.getLocalizedMessage());
      configs.add(baseConfig);
      return configs;
    }

    List<Element> appNodes = doc.selectNodes("/apps/app");
    if (null != appNodes) {
      int index = 0;
      for (Element appElm : appNodes) {
        try {
          AppConfig appConfig = baseConfig.cloneBasic();
          parseAppNode(appConfig, appElm, index++);
          configs.add(appConfig);
        } catch (CloneNotSupportedException e) {
          e.printStackTrace();
        }
      }
    }
    return configs;
  }