Keine JDOM-Exception trotz fehlerhafer XML-Datei

mki_germo

Erfahrenes Mitglied
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:

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
 
Moin!
Das ist schon korrekt.. Dein fehlerhaftes Element wird dann einfach nur als normaler Text interpretiert...

*grüssle*
MeinerEiner
 
Zurück