![]() |
Array of Object? Ich will Record-Daten serialisieren!
Hallo,
ich komm seit 2 Tagen nicht auf die Lösung des Problems. Es geht ums XML-Serialisieren (System.XML / System.XML.Serialization) unter .NET - aber wahrscheinlich kann mir hier prinzipiell auch jemand aus der Win32 Sparte helfen. Mal ein bisschen Beispielquelltext:
Delphi-Quellcode:
Ziel des Ganzen soll sein, dass ich quasi ein serialisiertes XML-File bekomme, wo nacheinander
type TPersonenDaten = class(System.Object)
public name: string; alter: integer; telefon: string; end; type TPersonen = class(System.Object) public Person: array of TPersonenDaten; (...) s := XmlSerializer.Create(typeOf(TPersonenDaten));
Code:
immer solche Datensätze vorkommen. Aber ich bekomme es beim besten Willen nicht gebacken, "I'm coding blind". Wenn mir jemand doch bitte mal schnell das Brett vorm Kopf wegnimmt? Das Problem ist, dass ich das Array irgendwie nicht richtig hinbekomme, so dass es serialisiert geschrieben werden kann. Ausserdem scheint es Probleme mit dem "array of object" aufbau zu geben; wenn ich da nämlich testeinträge hinzufügen will dann soll das immer eine nullreferenz sein. :(
<person>
<name>Mr.XY</name> <alter>99</alter> <telefon>123456789</telefon> </person> <person> <name>Ms.XY</name> <alter>101</alter> <telefon>12385734-12</telefon> </person> Danke für eure Hilfe! [edit=alcaeus]Code-Tags fuer XML-Code eingefuegt :) Mfg, alcaeus[/edit] |
Re: Array of Object? Ich will Record-Daten serialisieren!
uff! :shock:
Öffentliche, kleingechriebene Felder? öffentliche Arrays? T-Prefixe? :shock: Bist du sicher, dass du dich genügend mit .Net auskennst? Mache aus PersonenDaten eine richtige Klasse und aus Personen eine typisierte Collection von Person. Unter 1.1 (2.0 dürfte für Delphi wohl erst in 1 Jahr erscheinen...) lässt sich das mit viel Tipperei oder dem typed collection Wizzard aus #develop erledigen. Ich habe mal eben eine Klasse Person und eine PersonCollection angelegt und durch den Serializer gescheucht. Ist zwar kein Delphi sondern ein anderer Pascal dialekt, aber was da passiert sollte klar sein. (Wenn es nicht klar ist, dürfte Serialisierung dein kleinstes Problem sein ;) )
Delphi-Quellcode:
Das hier kommt dabei raus:
var Persons := new PersonCollection();
Persons.Add('Mr.XY', 99, '123456789'); Persons.Add('Ms.XY', 101, '12385734-12'); Persons.Add('Mr.30kg-Spatz', 1, 'Mööp'); var Serializer := new XmlSerializer(typeof(PersonCollection)); using Stream := new FileStream('Test.xml', FileMode.OpenOrCreate) do Serializer.Serialize(Stream, Persons);
XML-Code:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <Person> <Name>Mr.XY</Name> <Alter>99</Alter> <Telefon>123456789</Telefon> </Person> <Person> <Name>Ms.XY</Name> <Alter>101</Alter> <Telefon>12385734-12</Telefon> </Person> <Person> <Name>Mr.30kg-Spatz</Name> <Alter>1</Alter> <Telefon>Mööp</Telefon> </Person> </ArrayOfPerson> |
Re: Array of Object? Ich will Record-Daten serialisieren!
Habs inzwischen anders hinbekommen :-) Trotzdem vielen Dank! Ich werde mir das bei Gelegenheit nochmal auf diese Weise anschauen.
(ASP).NET ist nicht so gut wenn man nebenbei eigentlich noch an normalen Win32 Projekten arbeiten muss. Naja, wie auch immer, eine andere wichtige Frage. Ich kriege keinerlei Umlaute aus meinen XML Dateien raus. Also ä ü ö wird offensichtlich direkt ignoriert, ich bekomme dann beispielsweise "blken" statt "blöken". Hab schon ausprobiert, das Encoding zu ändern, scheint aber auch nicht so wirklich zu helfen ---- was muss ich tun? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz