Danke Robert. Aber so ganz habe ich das noch nicht verstanden.
Mal ein Ausschnitt so wie ich es bisher ohne CDATA gemacht habe. Gespeichert wird ein String und eine Arraylist von TFoo.
Delphi-Quellcode:
TXmlData = class
public
test : String;
[System.Xml.Serialization.XmlElementAttribute('Foo', TypeOf(TFoo), Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]
Foo : ArrayList;
end;
procedure TSteuerdateiReader.saveData;
var
Ser : XmlSerializer;
Writer : StreamWriter;
begin
Writer := StreamWriter.Create(XmlPath);
Ser := XmlSerializer.Create(typeOf(TXmlData));
try
Ser.Serialize(Writer, data);
finally
Writer.Close;
Writer.Free;
Ser.Free;
end;
end;
procedure TSteuerdateiReader.loadData;
var
Ser : XmlSerializer;
Reader : StreamReader;
begin
Reader := StreamReader.Create(XmlPath);
Ser := XmlSerializer.Create(typeOf(TXmlData));
try
data := Ser.Deserialize(Reader) as TXmlData;
finally
Reader.Close;
Reader.Free;
Ser.Free;
end;
end;
Jetzt müsste ich deinen Code nehmen, einbinden und im Code String durch CData ersetzen und "schon" klappt es?
Das wäre ja einfach. Wäre, weil ich leider deinen Code nicht nach Delphi konvertiert bekomme. Vielleicht kannst du mir da noch helfen?
Wird beim Serialisieren WriteXml aufgerufen?
Eine Möglichkeit ähnlich der Serialisierung von ArrayListen o.ä. gibt es nicht, oder?