Hallo Leute,
für eine Applikation muss ich eine XML-Konfigurationsdatei parsen. Das funtioniert auch soweit ganz gut, allerdings bin ich jetzt über ein (für mich) recht seltsames Verhalten gestossen. Zum Parsen verwende ich folgende Methode:
Die zugehörige xml-Datei sieht folgendermaßen aus:
Jetzt hatte ich das Problem, dass ich während eines Testes eine öffnende, spitze Klammer in einem Sourcetag vergessen hatte, als in etwa so:
Eigendlich sollte das doch auf eine JDOM-Exception laufen, dass XML ist ja syntaktisch nicht mehr korrekt. Doch genau das pasiert eben nicht. Mach ich jetzt nen Denkfehler oder hab ich irgendwo was Übersehen?
Vielen Dank schonmal für eure Antworten.
Gruss, Manuel
für eine Applikation muss ich eine XML-Konfigurationsdatei parsen. Das funtioniert auch soweit ganz gut, allerdings bin ich jetzt über ein (für mich) recht seltsames Verhalten gestossen. Zum Parsen verwende ich folgende Methode:
Java:
/**
* Parst die XML-Datei und füllt die Maps
* @throws JDOMException Fehler beim Parsen
* @throws IOException Dateizugriffsfehler
*/
private void parseXml() throws JDOMException, IOException {
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(this.src);
Element root = doc.getRootElement();
List<Element> destinations = root.getChildren("destination");
for (Iterator<Element> iter = destinations.iterator(); iter.hasNext();) {
logger.debug("Lese destination");
Element destination = iter.next();
String destinationSource = "";
String destinationName = destination.getChild("name").getValue();
String destinationType = destination.getChild("source").getAttributeValue("type");
if (destinationType.equals("registry")) {
String key = destination.getChild("source").getAttributeValue("key");
String keyName = destination.getChild("source").getAttributeValue("keyName");
logger.debug("Lese Key:" + key + ", KeyName " + keyName);
destinationSource = readRegistry(key, keyName);
if (destination.getChild("source").getAttributeValue("add") != null) {
destinationSource += destination.getChild("source").getAttributeValue("add");
}
} else if (destinationType.equals("directory")) {
destinationSource = destination.getChild("source").getValue();
}
this.destinationMap.put(destinationName, destinationSource);
logger.info("Neue Destination: " + destinationName + ": " + destinationSource);
}
}
Die zugehörige xml-Datei sieht folgendermaßen aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<destinationset>
<destination>
<name>Arbeitsverzeichnis</name>
<source type="registry" key="Software\\GERMO\\winEFW" keyName="Arbeit-Path"/>
</destination>
<destination>
<name>Spoolverzeichnis</name>
<source type="registry" key="Software\\GERMO\\winEFW" keyName="Ftp-Path"/>
</destination>
</destinationset>
Jetzt hatte ich das Problem, dass ich während eines Testes eine öffnende, spitze Klammer in einem Sourcetag vergessen hatte, als in etwa so:
Code:
source type="registry" key="Software\\GERMO\\winEFW" keyName="Arbeit-Path"/>
Eigendlich sollte das doch auf eine JDOM-Exception laufen, dass XML ist ja syntaktisch nicht mehr korrekt. Doch genau das pasiert eben nicht. Mach ich jetzt nen Denkfehler oder hab ich irgendwo was Übersehen?
Vielen Dank schonmal für eure Antworten.
Gruss, Manuel