Erst mal als Grundsatz:
Die Daten komplett in eine Klasse (Container) schreiben.
Diesen Container dann an eine Klasse (ContainerIO) übergeben, die diesen Container speichern und lesen kann.
Jetzt kann eine Klasse (ContainerIO) die Daten aus dem Container in ein
XML schreiben und berechnet aus den Daten auch den Hash. Dazu ist es nicht erforderlich die
XML-Ausgabe zu hashen, sondern rein die Daten.
Am Ende fügt ContainerIO noch den ermittelten Hashwert in die
XML Datei ein.
Beim Einlesen geht das quasi umgekehrt.
ContainerIO liest die Daten ein, bildet den Hashwert (wie schon vorher beim Speichern) und vergleicht diesen Hashwert mit dem aus der
XML-Datei.
Stimmt der Hashwert, dann alles ok, ansonsten
Exception werfen, oder was auch immer.