Generieren von XML mit SAX und Java
Wer weiß ein gutes tutorial (oder ein gutes Beispiel) für das schreiben von XML mit der SAX-framework (oder so ähnlich) und Java? Die Suche ergab sehr wenig in Bezug auf die nützliche Ergebnisse. Ich bin versucht zu exportieren, die von einem Android-app und bin auf der Suche zu vermeiden, so viel Speicher-overhead wie möglich.
InformationsquelleAutor der Frage Lunchbox | 2011-02-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist eine sehr nützliche Technik für generieren XML direkt aus POJOs via SAX Rahmen (nicht ein SAX-parser, aber der SAX-framework). Diese Technik könnte verwendet werden, um erzeugen ein XML-Dokument.
Generieren von XML aus einer Beliebigen Datenstruktur
http://download.oracle.com/javaee/1.4/tutorial/doc/JAXPXSLT5.html
Im wesentlichen, fügen Sie Methoden, um Ihre POJO oder schreiben Sie utility-Klasse für Ihre POJOs, die schalten Sie Sie in den SAX-event-Emittenten (ausgebende Ereignisse wie ein SAX-parser normalerweise würde beim parsing eines XML-Dokuments). Jetzt Ihr "SAX-event-generator" sieht aus wie die output-Seite von einem SAX-parser und kann beliebige content-handler, die ein SAX-parser nehmen würde, wie man das pretyy Drucke XML. Es könnte aber auch sein Futter zu einem DOM-parser erzeugen eines DOM Baum-oder Futtermitteln auf ein XSLT-engine zum generieren von HTML-oder eine echte XSL-übersetzung zimmerreserviereung, ohne das Sie erzeugen zunächst ein Zwischenprodukt XML-Dokuments aus den POJOs.
Beispielsweise eine Person-Klasse, vielleicht
emitXML()
Methode, die diese Zeilen:Update:
Ein paar andere Hinweise:
http://www.devx.com/java/Article/16925
http://www.developer.com//xml/article.php/2108031/Transforming-Flat-Files-To-XML-With-SAX-and-XSLT.htm
Ein paar Antworten auf Kommentare:
Ja, aber ich glaube, ich war nicht klar. Ich konnte einfach Durchlaufen Sie die Hierarchie, und verwenden Sie
XMLStreamWriter
direkt Ausgabe ein XML-Dokument in einen stream. Jedoch, die Artikel zeigen eine starke Technik Durchlaufen Sie die Hierarchie, und generieren SAX-Ereignisse, statt die Ausgabe ein XML-Dokument direkt. Nun kann ich plug-in unterschiedliche content-Handler, die verschiedene Dinge tun oder erzeugen Sie verschiedene Versionen der XML. Auch könnten wir füttern unsere Objekt-Hierarchie zu jedem tool, nahm einen SAX-parser, wie ein XSLT-Prozessor. Es ist wirklich nur unter Nutzung der Besucher-Muster etabliert, die von der SAX-framework: wir trennen die Traversierung der Hierarchie von der Ausgabe der XML. Die Teile, die Ausgabe des XML, die content-Handler, sollte sicherlich einXMLStreamWriter
wenn Ihr Zweck ist, schreiben Sie ein XML-stream.Beispielsweise auf unserem Programm, wir gesendeten XML-Nachrichten über Netzwerk-sockets zwischen verteilten Komponenten und die wir auch XSLT zur Generierung von HTML-Seiten. Zuvor haben wir durchquert, unserer Hierarchie erzeugen Sie ein XML-Dokument (ein string) und dann entweder schrieben, dass XML-Dokument in eine Netzwerk-Buchse oder die fed, dass dieses Dokument die XSLT-engine (die im wesentlichen nur analysiert es wieder). Nach der Verwendung dieser Technik, konnten wir im wesentlichen Futter für unser Objekt-Hierarchie (mit diesem SAX-adapter) direkt an die XSLT-engine, ohne die intermediate XML-string. Es wurde auch bequem in der Lage sein, um die Verwendung eines content-handler zu erzeugen eine kompakte XML-Darstellung für den Netzwerk-stream und einen anderen zu erzeugen, eine pretty-Print-XML-Dokument für das schreiben in eine log-Datei.
Vielleicht, aber ich denke, es hängt von Ihren Bedürfnissen ab. Wenn OP ' s-Anforderung ist einfach zu schreiben, die einem ein bestimmtes XML-Dokument, dann ist das definitiv übertrieben. Aber ich dachte es erwähnenswert, wenn die OP verwendet XML in anderer Weise auf sein Projekt, dass er nicht erwähnt hat. Es gibt keinen Schaden in pitching eine alternative Idee.
Nannte es Missbrauch möglicherweise ein bisschen stark, aber ich Stimme Sie sind berechtigt, Ihre Meinung. Seinen dokumentiert in einer Oracle-tutorial, so dass Ihr nicht als Missbrauch durch die Sun/Oracle-Ingenieure. Sie war sehr erfolgreich auf unser Projekt, um zu helfen, uns bei der Erfüllung unserer Anforderungen keine nennenswerten Nachteile, also werde ich halten diesen Ansatz in meiner toolbox für wenn sein nützlich in der Zukunft.
InformationsquelleAutor der Antwort Bert F
SAX-parsing ist für das Lesen von Dokumenten, nicht, Sie zu schreiben.
Können Sie schreiben von XML mit der XMLStreamWriter:
InformationsquelleAutor der Antwort morja
Unten Antworten "ein gutes tutorial für das schreiben von XML mit der SAX-parser und Java" Teil der Frage
Ich bin nicht sicher, ob Sie Durchlaufen haben. Aber ich mag Java ist Wirklich Groß Index der Alles.
Gehen durch diese: http://download.oracle.com/javase/tutorial/jaxp/index.html
Und schließlich dieses: http://download.oracle.com/javase/tutorial/jaxp/sax/index.html
InformationsquelleAutor der Antwort Nishant
Entnehmen Sie bitte meiner persönlichen blog-post: XML-Generierung In Java - insbesondere Die SAX-Methode. Es verweist auf ein paar andere Artikel über diese, bietet ein konkretes Beispiel, und vergleicht SAX mit anderen gängigen APIs zur Erzeugung von XML aus Java.
(Klar, das ist eine ältere Frage, aber hielten es für notwendig, fügen Sie diese für jemand anderes, die möglicherweise die gleiche Frage.)
InformationsquelleAutor der Antwort ziesemer
Auch überlegen, JAXB zu schreiben/Lesen von XML.
InformationsquelleAutor der Antwort Puce
Können Sie auch die Brücke zum trax:
Verwenden, etwa so:
InformationsquelleAutor der Antwort slow