Announcement

Collapse
No announcement yet.

STAX Serializer (Formatierer)???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • STAX Serializer (Formatierer)???

    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.

  • #2
    Formatierung juckt dem net...

    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 :-(
    Code:
    Bei der Codierung hab ich nun mal "UTF-16" angegeben:
    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.

    Was soll das?

    Comment

    Working...
    X