# Xml speichern - müssen alle Klassen deklariert werden?



## beta20 (18. Mai 2020)

Hallo,

ich möchte gerne eine XML Struktur speichern, die aus mehreren Klassen besteht.

Meine Frage ist nun, ob ich alle Klasse annotieren muss, mit:
@XmlRootElement
@XmlAccessorType(XmlAccessType.*FIELD*)

oder reicht es, wenn ich die Root - Klasse annotiere?


----------



## mrBrown (18. Mai 2020)

Die Root-Klasse solltest du mit XmlRootElement annotieren, in allen anderen anderen halt so wie es notwendig ist.
Annotation werden aber nicht an Kind-Elemente vererbt, falls du darauf hinaus wolltest.


----------



## beta20 (18. Mai 2020)

Ja, meine Frage ist:
Ich möchte die folgende Klassen von Primefaces (JSF Lib) bei mir als XML Struktur speichern (meine Diagrammstruktur):








						primefaces/primefaces
					

Ultimate Component Suite for JavaServer Faces. Contribute to primefaces/primefaces development by creating an account on GitHub.




					github.com
				




Die Frage ist nun, ob ich all diese Klassen bei mir in mein Projekt kopieren muss und diese dann mit den XML - Annotationen versehen muss, sodass das mit dem Abspeichern des XML´s funktioniert?


----------



## thecain (18. Mai 2020)

Because fuck layering 

Ich würde sowieso neue Objekte erstellen, die deine Domäne abbilden. Sonst bist du an die Implementierung von Primefaces gebunden und alle Änderungen.


----------



## beta20 (18. Mai 2020)

Hm, gibt es keine Möglichkeit ohne die Annotation die Klassen als XML zu speichern?


----------



## mrBrown (18. Mai 2020)

Spricht denn was dagegen, einfach direkt den richtigen Weg zu nehmen?


----------



## beta20 (18. Mai 2020)

ich habe das gerade mal probiert... 
Das sind leider zig Stellen, die ich bearbeiten muss, ebenfalls auch die "Componenten" ansich...


----------



## mrBrown (18. Mai 2020)

Wenn du zig Stellen bearbeiten musst, nur wenn du das zum Speichern in ein sinnvolles Model konvertierst, spricht das eigentlich noch mehr dafür, es richtig zu machen


----------



## beta20 (18. Mai 2020)

Nein...
Ich nutze diese JSF Komponente hier:




__





						PrimeFaces Showcase
					






					www.primefaces.org
				




Nun möchte ich eben alle Objekte (Position, StyleClass etc.) in eine XML speichern. 
Das Objekt von "DiagramModel" wäre dann eben perfekt...


----------



## thecain (18. Mai 2020)

XML -> Dein Model -> DiagramModel

DiagramModel ist schon rein aus Architektur-Sicht nicht zu empfehlen. Noch weniger würde ich eine Klasse zu einem XML Serialisieren, die ich nicht selber kontrolliere. So bist du an fixe Versionen von Primefaces gebunden und hast keine Chance einmal ein anderes Framework oder auch nur eine andere Kompenente zu verwenden, wenn sich die Anforderung ändert. Ausser natürlich du passt den ganzen Code an, inkl aller deiner XMLs.










						bliki: PresentationDomainDataLayering
					

Layering a system into presentation (UI), domain logic, and data access. This layering is useful but should not used for the higher modules of larger systems.



					martinfowler.com


----------



## mihe7 (19. Mai 2020)

beta20 hat gesagt.:


> Hallo,
> 
> ich möchte gerne eine XML Struktur speichern, die aus mehreren Klassen besteht.
> 
> ...


Mal unabhängig vom (Un)Sinn des Vorhabens: man benötigt gar keine Annotationen, die machen das Leben nur leichter.


----------



## tommysenf (20. Mai 2020)

beta20 hat gesagt.:


> Hm, gibt es keine Möglichkeit ohne die Annotation die Klassen als XML zu speichern?







__





						XStream - Two Minute Tutorial
					





					x-stream.github.io


----------



## beta20 (21. Mai 2020)

Danke, habe es aber nun so gelöst, wie vorgeschlagen und eine eigene Struktur erstellt


----------

