Zum Inhalt springen

XML-Konfigurationsdateien mit Java


Empfohlene Beiträge

Geschrieben

Hi@all,

ich hoffe einer von euch Java-Gurus hatte es schonmal mit XML zu tun. Ich bin schon den ganzen Tag am hin- und her-überlegen wie ich eine einfache Konfigurationsdatei auslesen und die Werte weiterverarbeiten kann.

Hintergrund ist der, dass ich Konfigurationen für ESX-Server einmal als Klasse und das konkrete Abbild als XML-Datei habe.

Die Klasse:


public class ESXServer {

    public String UserName = "";

    public String HostName = "";

    public String Password = "";

    public String DataCenter = "";

(und so weiter...)

Meine XML-Konfigurationsdatei:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>

<!DOCTYPE esxconf SYSTEM "esxconf.dtd">

<esxconf>

    <esx name="MeinEsx-Server">

        <version>ESX3.5</version>

        <location>192.168.1.1</location>

        <user>root</user>

        <pass>pass</pass>

        <storage name="[storage]">

            <vmachine name="WinServer">

                <vdisk path="WinServer/WinServer.vmdk" />

            </vmachine>

        </storage>

        <storage name="[storage2]">

            <vmachine name="WinServer2">

                <vdisk path="WinServer2/WinServer2.vmdk" />

            </vmachine>

        </storage>

    </esx>

Jetzt habe ich einen Vector<ESXServer, String> und will dort die ESX-Server mit Namen als Indizes einspeichern. Habe versucht mir das DOM-Modell anzuschauen und auch diesen SAX-Parser. SAX kann ich nicht benutzen weil es Readonly ist. beim DOM-Modell heißt es in den Tutorials immer, das Objekte vom Parser angelegt werden, allerdings wird dort immer nur mit irgendwelchen kruden Nodes rumgespielt, einen aufruf alá

System.out.println(esx.name);

Habe ich bisher allerdings nicht entdecken können(was ja Objektmäßig wäre), noch irgendeine Möglichkeit die Sachen über eine art

xml.getElement("esx").getAttribute("name");

was ja sinnvoll wäre. Kann mir irgendwer erklären, wie genau das funktionieren soll? Oder muss ich echt nen eigenen Parser schreiben(was ja nicht Sinn und Zweck von XML-Konfigurationsdateien sein sollte...).

Für Antworten danke ich im voraus.

Liebe Grüße

Cloud2302

Geschrieben

Ich habe eine Lösung gefunden, falls jemand ein ähnliches Problem hat:

Es gibt sogenannten "XML-Binder", sowohl von sun als auch von properitären Drittherstellen( zum Beispiel X-Stream). Ich habe mich für JAXB entschieden,da diese Unterstützung im Standard-Java-Paket dabei ist. Wenn man seine XML-Datei inklusive Schema(xsd oder dtd) erstellt hat, kann man JAXB dazu veranlassen aus dieser Beschreibung Java-Klassen zu erzeugen. Diese fügt man in sein Projekt ein und "unmarshalled" die XML-Datei mit folgendem Code in seine neu erzeugten Klassen:


            JAXBContext jc = JAXBContext.newInstance(Esxconf.class);

            Unmarshaller u = jc.createUnmarshaller();     

            Esxconf fooObj = (Esxconf) u.unmarshal(new File("esxconf.xml"));

Darauf hin kann man einfach über fooObj.esx.get(1).getLocation(); an die XML-Attribute herankommen. Die andere Richtung funktioniert ähnlich, nur das man das ganze dann "marshalled". Macht auf jeden Fall richtig viel Freude, da man wirklich Objektorientiert an seine Konfiguration drankommt.

Lg Cloud2302

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...