Ich benutze xStream, um XML zu manipulieren. Alles ist ok. XML-Archiv und andere Dinge anziehen. Aber ich habe ein Problem:
Beispiel: Mein xml enthält ein Tag, und innerhalb dieses habe ich noch einige Tags namens <comment>
. Sehen Sie sich einen Beispielcode an:
Und progressiv. Ich kann 500 Tags innerhalb des Tags erstellen. Und diese Kommentare sind vom Typ Kommentar.
Wie kann ich mit dem xStream serialisieren, um all diese Tags in den Klassen zu platzieren? Ich mache nicht wie man in der Klasse die verschiedenen Objekte erhält.
Offensichtlich werde ich das mit einem Array oder etwas anderem machen. Aber ich weiß nicht, wie ich das machen kann.
Für dieses XML würden Sie wahrscheinlich nach einer Klassenstruktur wie folgt suchen:
%Vor%Ihre Unmarshalling-Logik wäre dann etwas wie:
%Vor% Außerdem, wie Nishan in den Kommentaren erwähnt hat, ist Ihr XML nicht richtig formatiert. Sie müssen sicherstellen, dass Ihr <comment>
mit </comment>
und nicht mit </comments>
endet. Sie müssen dies beheben, bevor einer der Codes in dieser Antwort funktioniert.
Obwohl es ein alter Thread ist, aber hier ist die Annotated-Version:
%Vor%Um zu entpacken, brauchst du das:
%Vor% Wenn Sie mit mehreren Objekten arbeiten, erwarten Sie möglicherweise, dass Sie fromXML
( InputStream
in) mehrmals aufrufen, um jedes Objekt zu erhalten. Die Methode behandelt jedoch nicht wie erwartet und hat eine schlecht formulierte Ausnahmebedingungsnachricht ausgegeben, wenn Sie dies tun. Alternativ kann das Umschließen aller Objekte in einem größeren Objekt dazu führen, dass das Programm mehr Speicher als gewünscht verwendet oder nicht genügend Arbeitsspeicher zur Verfügung hat.
Um dies zu beheben, habe ich eine generische Hilfsmethode erstellt, so dass ich jedes kleine Objekt in eine eigene Zeichenfolge parsen konnte, so dass ich fromXML(String)
method verwenden und trotzdem die Größe vergrößern konnte.
Beispielaufrufe:
%Vor%Tags und Links java xml xml-parsing xstream