Frage

Meine stärkste Führung ist, dass der Code, der mit dem eingehenden XMLs beschäftigt mich tatsächlich damit eine ungültige / unvollständige Datei empfängt das DOM-Parsing fehlschlägt. Irgendwelche Vorschläge?

War es hilfreich?

Lösung

Eine unvollständige Datei ist definitiv der richtige Ort zu Beginn der Suche. Ich würde direkt aus der Datei drucken, bevor der Punkt, den Sie es analysieren, um zu sehen, was an den Parser gesendet wird immer. Wenn es unvollständig ist es offensichtlich,. Wenn es ungültig ist, werden Sie ein wenig suchen zu tun haben.

Andere Tipps

Meine erste Vermutung wäre, dass die DOM-mit Codeelementen behandelt, die als optional in der DTD als verbindlich gekennzeichnet ist.

Edited hinzufügen: Was ich meine ist, dass, wenn Sie gegen eine DTD validieren, können Sie nicht so etwas wie die folgenden (zB mit dom4j) erwarten können, alles andere als null zurück.

doc.selectSingleNode("//some/element/in/a/structure");

Das gleiche gilt natürlich auch, wenn Sie Elementnavigation sind Aneinanderreihung nennt, oder im allgemeinen Rückgabewert nicht überprüfen, bevor sie verwendet wird.

Sie sollten einen Stack-Trace haben zeigt auf, wo Sie NPE geworfen wird. Das sollte die Anzahl der Variablen verengen, die null sein kann. Anstatt immer den Debugger oder printf aus, schlage ich vor, das Hinzufügen geeignete Kontrollen und eine Ausnahme zu werfen, wo sobald die Fehler erkannt werden können. Es ist eine gute Gewohnheit, in später mysteriös Probleme zu vermeiden.

Im Idealfall sollten Sie Ihre Java-Anwendung in einem Debugger ausgeführt werden, so dass, wenn eine nicht abgefangene Ausnahme ausgelöst wird Sie die Aufrufhierarchie untersuchen können, Variablen, etc. und sehen genau das, was Linie den Absturz verursacht, und vielleicht, welche Daten null, das verwendet wurde.

Wenn Sie nicht einen Debugger für welchen Gründen auch immer verwenden, dann kompilieren Sie Ihre Anwendung mit Debugging-Unterstützung, und fügen Sie eine Exception-Handler für diesen speziellen Fehler, und drucken Sie die Stack-Trace. Auch hier wird zeigen genau, welche Linie in welcher Datei den Absturz verursacht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top