Fertiges Programm in Schleife einbauen

Eddymaniac

Erfahrenes Mitglied
Hallo Mitstreiter...

ich habe mir ein relativ großes Programm gebastelt, welches mir aus einer XML Datei diverse Werte ausliest. Allerdings ist dies im Moment beschränkt auf eine fest eingetragene XML Datei.

Nun möchte ich aus einem Verzeichnis alle XML Dateien auslesen. Hierzu werde ich wohl einen Array verwenden. Jedoch weiß ich nicht wie ich den Parameter(also den Dateinamen samt Pfad) in die Klasse übergebe.

Kann mir jemand ein kleines Beispiel machen oder erläutern wie genau man sowas macht?

Bin um jede Hilfe dankbar...

Gruß,
Eddy
 
Ach so... da war noch ne Frage...

Diese Klasse welche mir die Daten aus einer XML Datei ausliest, speichert die Daten in einer HashMap. Wie kann ich auf diese HashMap von einer Fremden Klasse aus zugreifen?

Gruß,
Eddy
 
Nun möchte ich aus einem Verzeichnis alle XML Dateien auslesen. Hierzu werde ich wohl einen Array verwenden. Jedoch weiß ich nicht wie ich den Parameter(also den Dateinamen samt Pfad) in die Klasse übergebe.
Welche Klasse?

Kann mir jemand ein kleines Beispiel machen oder erläutern wie genau man sowas macht?
Java:
String path = "a/b/c.xml";
XMLValueReader xmlValueReader = new XMLValueReader(path);
Oder was genau meinst du?

Grüße,
Mattthias
 
Sorry, war vielleicht etwas zu allgemein gehalten...

Momentan habe ich eine Klasse (Test3.java). Diese enthält im Moment auch die main Methode.

In dieser Klasse wird die XML Datei ausgelesen. Allerdings ist hier die Datei fest hinterlegt.

Wie macht man es nun generell Schreibt man nun eine neue Klasse, die das Verzeichnis ausliest, oder baut man das auch in das Hauptprogramm ein? Da fehlt mir einfach noch die Erfahrung...

Meine Idee ist halt nun eine Neue Klasse mit einer "for" Schleife die die einzelnen Dateien aus dem Verzeichnis liest und in die lesende Klasse übergibt...

Hoffe das ist etwas verständlicher.
 
Also das Auslesen der XML-Datei würde ich in eine eigene Methode packen, die als Übergabewert eben ein java.io.File erwartet. Und die Main-Methode könnte dann wie folgt aussehnen:

Java:
import java.io.File;
public class MyXMLReader {
  public static void main(String[] args) {
    File xmlFolder = new File("[Ordnerpfad, welcher die XML-Dateien enthält");
    File[] xmlFiles = xmlFolder.listFiles();

    for(File currentFile : xmlFiles) {
      if(currentFile.getName().endsWith(".xml")) {
        readXMLFile(currentFile);
      }
    }
  }

  private static void readXMLFile(File xmlFile) {
    //Hier dein Programm zum Auslesen der XML-Datei einbauen.
  }
}
 
Zuletzt bearbeitet:
Du könntest den Ordnerpfad natürlich dem Programm beim starten auch gleich übergeben somit müsstest du nicht ständig das Programm umschreiben, wenn sich der Orderpfad ändert. Ein Programmaufruf könnte dann so aussehn (als Batch- oder CMD-Datei):
Code:
java MyXMLReader C:\XMLDateien\

Und das Programm dazu leicht abgeändert:
Java:
import java.io.File;
public class MyXMLReader {
  public static void main(String[] args) {
    if(args.length != 1) {
      showUsage();
      System.exit(-1);
    }

    File xmlFolder = null;
    try {
      xmlFolder = new File(args[0]);
    } catch (Exception e) {
      System.out.println(e);
      showUsage();
      System.exit(-1);
    }

    File[] xmlFiles = xmlFolder.listFiles();
 
    for(File currentFile : xmlFiles) {
      if(currentFile.getName().endsWith(".xml")) {
        readXMLFile(currentFile);
      }
    }
  }

  private static void showUsage() {
    System.out.println("Falsche Parameter. Bitte starte das Programm so:\n"+
    "java MyXMLReader [XML-Ordnerpfad]");
  }
 
  private static void readXMLFile(File xmlFile) {
    //Hier dein Programm zum Auslesen der XML-Datei einbauen.
  }
}
 
Zurück