Ich versuche, einen Zeilenumbruch nach meinen Kommentaren oberhalb des Wurzelknotens im XML-Dokument hinzuzufügen.
Ich brauche so etwas:
%Vor%Aber was ich bekommen konnte, ist dies (Zeilenumbruch innerhalb der Wurzel, aber ich brauche einen Zeilenumbruch nach dem Kommentar):
%Vor%Ich muss den Zeilenumbruch direkt nach meinem Kommentar hinzufügen. Gibt es eine Möglichkeit, dies zu tun?
Mein Code:
%Vor% Sie möchten grundsätzlich einen Textknoten mit einem Zeilenumbruch nach dem Kommentarknoten.
BEARBEITEN : An den Wurzelknoten eines org.w3c.dom.Document
ist es anscheinend nicht möglich, auch nur textuelle Leerzeichen anzuhängen. Das ist zu 100% formal korrekt, aber auch nicht hilfreich.
Die Art und Weise, wie Kommentare in der Ausgabe von Transformer
dargestellt werden, wird durch den verwendeten Serializer bestimmt (es gibt verschiedene Serializer für HTML-, XML- und Klartextausgaben). Im eingebauten XML-Serializer wird das Ende eines Kommentars als -->
- ohne Zeilenumbruch definiert.
Da die Interna von javax.xml.transform.Transformer
fest verdrahtet sind, sind die Serialisierer keine öffentliche API und die Klasse ist als final
gekennzeichnet. Das Überschreiben dieses Verhaltens oder das Setzen eines benutzerdefinierten Serialisierers ist unmöglich.
Mit anderen Worten, Sie haben kein Glück, Ihren Zeilenumbruch auf clean hinzuzufügen.
Sie können es jedoch leicht unrein hinzufügen:
%Vor%Es wird davon abgeraten, Such- und Ersetzungsoperationen für XML-Strings durchzuführen, aber in diesem Fall kann wenig passieren, was schief gehen kann.
Ich habe es nach einiger Zeit noch einmal gesehen, weil ich das gleiche Problem hatte. Ich habe eine andere Lösung gefunden, die die Ausgabe in einem String nicht puffern muss:
Schreiben Sie nur die XML-Deklaration, indem Sie ein leeres Dokument übergeben. Dies wird auch einen Zeilenumbruch anfügen.
Schreiben Sie den Dokumentinhalt ohne XML-Deklaration
Code:
%Vor%Tags und Links java xml line-breaks domparser