Writer wird formal korrektes XML erstellt und
ausgegeben. Wieder gibt es zwei Möglichkeiten, einen Writer
einzusetzen: Man kann Methoden aufrufen, die das XML Stück
für Stück erstellen, oder man übergibt dem Writer ein
komplett im Speicher vorhandenes Dokument.
Um einen Writer zu erzeugen, wird ein mit << beschreibbares
Objekt benötigt, damit ist die Ausgabe auf Sockets, (temporäre) Dateien, Strings
und auch Arrays möglich.
Writers überprüfen, ob die Tags korrekt ineinander verschachtelt
sind. Wenn es Fehler gibt, wird die NQXML::WriterError-Ausnahme
aufgerufen. Inhaltsfreie Tags wie <foo attr="x"/>
werden normalisert auf <foo attr="x"></foo>.
require 'nqxml/writer'
writer = NQXML::Writer.new($stdout)
writer.processingInstruction('xml', 'version="1.0"')
writer.write("\n")
writer.startElement('kunde')
writer.write("\n")
writer.startElement('name')
writer.attribute('vorname', 'valigatrice')
writer.attribute('nachname', 'ballerina')
writer.endElement('name')
writer.write("\n")
writer.startElement('email')
writer.write('valigatrice@ballerinas.com')
writer.endElement('email')
writer.write("\n")
writer.endElement('kunde')
writer.write("\n")
Mit einem fertigen Dokument lässt sich die Arbeit wesentlich vereinfachen:
require 'nqxml/treeparser'
require 'nqxml/writer'
doc = NQXML::TreeParser.new(
File.open('personen.xml')).document
writer = NQXML::Writer.new($stdout)
writer.writeDocument(doc)
$stdout.puts