Ich verwende JAXB, um XML-Nachrichten zu erstellen. Die XML, die ich erstellen muss, ist (der Einfachheit halber):
%Vor%Mein Code sieht so aus:
%Vor% Das Problem: Das Element header
wird nicht angezeigt (Header ist null
). Wenn der Header auf eine leere Zeichenfolge gesetzt ist, wird Folgendes angezeigt:
Wenn ich den Typ Object
anstelle von String
verwende, ist das Ergebnis noch schlimmer:
Übrigens: Ich verwende diesen Code um die XML-Zeichenfolge zu erstellen.
Ist es möglich, ein leeres Tag zu bekommen?
In% sind <header/>
und <header></header>
identisch. Wenn Sie das erstere wirklich wollen, dann verwenden Sie einen Prettifier. javax.xml.transform.TransformerFactory.newTransformer()
wird das wahrscheinlich für Sie erledigen.
Ein leeres Tag für ein String-Objekt ist im Wesentlichen die leere Zeichenfolge.
Wenn Sie Folgendes anrufen, erhalten Sie, was Sie suchen:
%Vor%Ich sollte auch beachten, dass in XML die folgenden zwei Deklarationen eines Headers identisch sind. Beide haben keine untergeordneten Textknoten. Diese sind im Wesentlichen gleich und werden von allen XML-Parsern gleich behandelt:
%Vor% Ich wollte dasselbe, effektiv <header/>
anstatt <header></header>
während des XML-Serialisierungsprozesses.
Da ein Nullwert - und nicht eine leere Zeichenfolge - das korrekte Ergebnis liefert, habe ich meine Setter-Methode so geändert, dass der Wert explizit auf null gesetzt wird:
%Vor%