Wie du wieder gekonnt alle Punkte ignoriert hast...
Wenn nun Karl-Heinz hier reinschaut und auf eine Lösung hofft, gibt's nur unser hohles Geblubber...
Deine Datei ist kein
XML! 1.Mitversicherte dürfte kein korrekter Tag sein.
Du willst wohl sowas haben:
XML-Code:
<?
xml version="1.0" encoding="utf-8" ?>
<Einstellungen xmlns="http://Raik.net/Einstellungen.xsd">
<Versicherte>
<Versicherter Name="Mustermann"
Vorname="Manfred">
<Mitversicherte>
<Mitversicherter Name="Mustermann"
Vorname="Hanna"/>
</Mitversicherte>
</Versicherter>
</Versicherte>
</Einstellungen>
Das sind effektiv 3 Klassen: Die Einstellungen, ein Versicherter und ein Hauptversicherter, der von Versicherter erbt um dann noch eine Eigenschaft Mitversicherte einzuführen.
Ich hatte gerade Lust und habe das mal zusammengefriemelt.
Du wirst es dir noch zu D.Net untersetzen müssen, aber das sollte easy möglich sein. (zumal dir ja auch C# nicht unbekannt ist
)
Der Versicherte:
Delphi-Quellcode:
uses
System.Xml.*;
type
[SerializableAttribute]
[XmlTypeAttribute(&Namespace := 'http://Raik.net/Einstellungen.xsd')]
Versicherter = public class
public
[XmlAttributeAttribute]
property Name : String;
[XmlAttributeAttribute]
property Vorname : String;
constructor; empty; //parameterloser constructor für den serializer
constructor(name, vorname : String);
end;
implementation
constructor Versicherter(name, vorname : String);
begin
self.Name := name;
self.Vorname := vorname;
end;
Der Hauptversicherte:
Delphi-Quellcode:
uses
System.Xml.*,
System.Collections.Generic;
type
[SerializableAttribute]
[XmlTypeAttribute(&Namespace := 'http://Raik.net/Einstellungen.xsd')]
HauptVersicherter = public class(Versicherter)
private
fMitVersicherte : List<Versicherter> := new List<Versicherter>();
public
[XmlArrayAttribute('Mitversicherte')]
[XmlArrayItemAttribute('Mitversicherter', IsNullable := false)]
property MitVersicherte : List<Versicherter> read fMitVersicherte;
end;
Und die Einstellungen:
Delphi-Quellcode:
uses
System.Xml.*,
System.Collections.Generic;
type
[XmlRootAttribute(&Namespace := 'http://Raik.net/Einstellungen.xsd',
IsNullable := false)]
Einstellungen = public class
private
fVersicherte: List<HauptVersicherter> := new List<HauptVersicherter>();
protected
public
[XmlArrayAttribute('Versicherte')]
[XmlArrayItemAttribute('Versicherter',
typeof(HauptVersicherter),
IsNullable := false)]
property Versicherte : List<HauptVersicherter> read fVersicherte;
end;
Alles "dumme" Daten container mit ein paar Attributen, die das
XML Mapping steuern.
Hier noch Bleistift code zum Laden und Speichern:
Delphi-Quellcode:
class method ConsoleApp.Load(fileName : String);
begin
var serializer := new XmlSerializer(typeof(Einstellungen));
using reader := new XmlTextReader(fileName) do
var einstellungen := serializer.Deserialize(reader) as Einstellungen;
end;
class method ConsoleApp.Save(fileName : String);
begin
var serializer := new XmlSerializer(typeof(Einstellungen));
var einstellungen := new Einstellungen();
with hauptVersicherter := new HauptVersicherter('Mustermann', 'Manfred') do
begin
hauptVersicherter.MitVersicherte.Add(new Versicherter('Mustermann', 'Hanna'));
einstellungen.Versicherte.Add(hauptVersicherter);
end;
using writer := new XmlTextWriter(fileName, Encoding.UTF8) do
serializer.Serialize(writer, einstellungen);
end;
Ist eigentlich ziemlich easy und spätestens beim Übersetzen sollte der Groschen fallen.