STAX Serializer (Formatierer)?

Status
Nicht offen für weitere Antworten.

nimo22

Aktives Mitglied
Hallo,

ich hab mit Hilfe von STAX (Cursor-Variante) eine XML-Datei erzeugt..

Die Formatierung hab ich nun mit Hilfe von
Code:
writer.writeDTD("\n"); //neuer Tag beginnt
writer.writeDTD("\t"); // neuer Sub-Tag beginnt

vorgenommen.

Gibt es vielleicht eine schönere Variante, das XML-Dokument zu formatieren?

Wenn ich das erzeugte XML-Dokument mit dem Browser öffne,
dann ist es schön als Baumstruktur sichtbar,
ABER wenn ich das XML-File mit nem normalen Texteditor öffne, dann steht alles auf einer Zeile. Muss ich mit der Codierung vielleicht noch was machen? Also so z.B.


Code:
...
XMLOutputFactory factory = XMLOutputFactory.newInstance();
            
// XMLStreamWriter -> Cursor-Version
XMLStreamWriter writer = factory.createXMLStreamWriter(new FileOutputStream(xmlFile),"UTF-8");
            
// write XML-Header
writer.writeStartDocument();
writer.writeDTD("\n");
..

Leider fügt er mir das "UTF-8" nicht im XML-Dokument hinzu, statt

Code:
<?xml version="1.0" encoding="UTF-8"?>

schreibt er mit das so:

Code:
<?xml version="1.0" ?>

Hat die Codierung was mit der Darstellung im Text-Editor zu tun?

Gibts ne Möglichkeit, wie bei SAX das mit mit nem schönen Transformer zu machen?

Also ungefähr so:

Code:
...
serializer.setOutputProperty(OutputKeys.ENCODING, p_Encoding);
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
...

dank vorab.
 

nimo22

Aktives Mitglied
hmm..nun hab ich das mit dem

Code:
writer.writeDTD("\n"); //neuer Tag beginnt
writer.writeDTD("\t"); // neuer Sub-Tag beginnt

weggelassen. Anscheinend formatiert STAX das schon automatisch als XML-Struktur. Nur die Text-Version des XML-Doks is net schön: alles wird auf einer Zeile geschrieben :-(


Bei der Codierung hab ich nun mal "UTF-16" angegeben:
Code:
XMLStreamWriter writer = outputFactory.createXMLStreamWriter(new FileOutputStream(xmlFile),"UTF-16");

STAX ignoriert dies, und nimmt automatisch "UTF-8",
d.h. wenn ich keine Codierung angeb, dann steht da trotzdem "UTF-8" drinnen.

Bei der Iterator-Variante gibt es ne Methode .getEncodingScheme, aber leider keine Methode .setEncodingScheme.

Hat die Codierung Auswirkung auf die Anzeige im TXT-Editor?
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben