cloud2302 Geschrieben 15. Oktober 2008 Geschrieben 15. Oktober 2008 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 Zitieren
cloud2302 Geschrieben 16. Oktober 2008 Autor Geschrieben 16. Oktober 2008 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 Zitieren
Empfohlene Beiträge
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.