コード例 #1
0
  /**
   * Cauta in toate fisierele din folderul cu XSD (Config.exec_schemas) si incarca analizatoarele
   * disponibile.
   */
  private void loadAnalyzers() {
    // Lista cu analizatoarele disponibile
    aList = new ArrayList<Analyzer>();

    // Deschide directorul xml_schema.
    File directory = new File(Config.exec_schemas);

    // Ia fisierele din directorul xml_schema.
    File[] files = directory.listFiles();

    // Parseaza fiecare fisier.
    for (File file2 : files) {
      if (file2.isFile()) {
        String file;
        file = file2.getAbsolutePath();

        Analyzer a = this.getAnalyzer(file);
        if (a != null) {
          aList.add(a);
        }
      }
    }

    // Verifica daca exista analizatoare.
    if (aList.size() == 0) {
      ErrorMessage.show("Nu exista analizatoare disponibile!");
    }
  }
コード例 #2
0
  /**
   * Parseaza fisierul primit ca parametru.
   *
   * @param file Calea absoluta a fisierului de parsat.
   * @return mixed Daca in fisier a fost gasit un analizator atunci returneaza Analyzer, altfel
   *     returneaza null.
   */
  private Analyzer getAnalyzer(final String file) {
    Document dom = null;
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    dbf.setNamespaceAware(true);

    try {
      // Ia din factory o noua instanta de document builder.
      DocumentBuilder db = dbf.newDocumentBuilder();

      // Parseaza pentru a obtine o reprezentare DOM a fisierului.
      dom = db.parse(file);
    } catch (Exception e) {
      ErrorMessage.show("Exceptie la parsarea fisierelor XSD:" + e.getMessage());
    }

    Map<String, String> dt = new TreeMap<String, String>();

    // Ia toate tagurile simpleType.
    Match simpleType =
        $(dom).namespace("xs", "http://www.w3.org/2001/XMLSchema").xpath("//xs:simpleType");

    for (int i = 0; i < simpleType.size(); i++) {
      // Ia nume si valoare daca acestea exista.
      String name = simpleType.get(i).getAttribute("name");
      String value =
          $(simpleType.content(i))
              .namespace("xs", "http://www.w3.org/2001/XMLSchema")
              .xpath("//xs:pattern")
              .attr("value");

      // Verifica daca exista name si value.
      if (name != null && value != null) {
        dt.put(name, value);
      }
    }

    // Avem nevoie de un analizator de un anumit tip.
    if (dt.get("execType") != null && dt.get("execType").compareTo(this.type) == 0) {
      return new Analyzer(dt.get("execName"), dt.get("execDescription"), this.type);
    }

    return null;
  }