Ich meine, du könntest den Variant doch einfach "wie einen String" (das ist ja eienr der Vorteile) benutzen. Bei einem Boolean würde dann z.B. "True" oder "False" in der
XML-Datei stehen, bei einem Integer die entsprechend in einen Text umgewandelte Zahl usw. Beim Einlesen (bzw. genauergesagt bei der Benutzung des Wertes) wird der Wert dann von Delphi wieder komvertiert. Nur bei Objekten müsste man noch eine Spezialbehandlung einführen, um diese auch noch zu serialisieren, alles andere macht Delphi ja schon selbst.
[Edit]
Also, was ich meine, ist, statt
Delphi-Quellcode:
varShortInt: Begin
Node := AddNode(List[i].Name);
SavePropInfos(Node, List[i]);
Node.Attributes['variant'] := 'ShortInt';
Node.Data := IntToStr(TVarData(V).VShortInt);
End;
geht auch einfach
Node.Data := V;
[/Edit]