Ich habe ein XML-Objekt und wenn ich es transformiere mit
%Vor%Ich erhalte einen Fehler bei einem meiner Objekte. Wenn ich einen Haltepunkt verwende und das XML-Objekt durchschaue, kann ich nicht sagen, warum, obwohl die TransformerException sagt, dass die enthaltene Ausnahme eine Nullzeiger-Ausnahme ist. Es funktioniert auf anderen verwandten Objekten, die ich in demselben Programm habe, aber ich habe keine Ahnung, wie man das debuggt.
[[EDIT]] Hier ist der Stack-Trace:
%Vor%Ich vermute, dass der Fehler bei einem Ihrer Objekte liegt, entweder weil das Objekt kein gültiger XML-Code ist oder weil der XML-Code einen leeren (Null-) Textknoten und keinen leeren String-Wert enthält.
siehe java.lang.NullPointerException
at com.sun.org.apache.xml.internal.serializer. ToUnknownStream.characters(ToUnknownStream.java:338)
Gestützt auf den Link in @Sajan Chandrans Kommentar:
Wenn Sie sich das ansehen, sehen Sie den Code.
%Vor% Das Problem mit char.length()
ist Null wegen eines Null-Text-Knotens.
Um dies zu beheben, stellen Sie einfach sicher, dass alle XML-Knoten einen String-Wert und keinen Nullwert haben.
Wenn dies nicht funktioniert, können Sie ein Beispiel für das XML-Objekt bereitstellen, durch das die Ausnahme ausgelöst wird. Außerdem können Sie überprüfen, ob das Objekt gültiges XML ist und ob Zeichenentitäten usw. richtig codiert sind.
Grundsätzlich stimmen Sie mit den anderen Antworten überein, außer:
Das Problem wäre, dass Sie in Ihrer Datenstruktur doc
oder e
einen Textknoten mit dem Zeicheninhalt null ( nicht leer) haben.
Während Kirans Post (verlinkt von Sajan) hilfreich ist, bin ich mir ziemlich sicher, dass er sich irrte, weil "die chars.length () Null war, weil eine Null-Textknoten-Einfügung versucht wurde." Die chars.length()
war nicht Null; Der Aufruf von chars.length()
hat eine NPE ausgelöst, weil chars
null war.
Um das Problem zu finden, fügen Sie hier einen Methodenaufruf hinzu:
%Vor% Definieren Sie dann checkForNullTextNodes(node)
zu: (Pseudocode)
n
für jeden Knoten z. (immer noch Halb-Pseudocode)
%Vor% Das sollte Ihnen helfen herauszufinden, wo sich Textknoten mit Null-Zeichen-Inhalt befinden, was Ihnen helfen soll herauszufinden, woher sie kommen. Wo werden diese doc
oder e
Strukturen überhaupt erstellt?