XmlSerializer
-
Folgendes Funktioniert bei mir wunderbar
using namespace System; using namespace System::IO; using namespace System::Xml::Serialization; public ref class OrderedItem { public: String^ ItemName; public: String^ Description; public: int Quantity; public: Decimal UnitPrice; }; int main() { XmlSerializer ^serializer = gcnew XmlSerializer( OrderedItem::typeid ); // Create an instance of the class to be serialized. OrderedItem^ i = gcnew OrderedItem(); // Set the public property values. i->ItemName = "Widget"; i->Description = "Regular Widget"; i->Quantity = 10; i->UnitPrice = (Decimal)2.30; // Writing the document requires a TextWriter. TextWriter^ writer = gcnew StringWriter(); // Serialize the object, and close the TextWriter. serializer->Serialize( writer, i ); writer->Close(); Console::WriteLine(writer->ToString()); }
und liefert
<?xml version="1.0" encoding="utf-16"?> <OrderedItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <ItemName>Widget</ItemName> <Description>Regular Widget</Description> <Quantity>10</Quantity> <UnitPrice>2.3</UnitPrice> </OrderedItem>
-
danke mir hat einfach ein public vor der klasse gefehlt jetzt funzt es.
noch eine andere kleinigkeit->
wenn ich meine namespaces und includefiles in der stdafx.h sammel und diese in meine *.cpp einfüge kennt er alle aber in meinen *.h muss ich trotzdem alle einzeln angeben, mach ich da irgend etwas falsch?
ah noch was:
void ProjectFile::SerializeObject( String^ filename, Object ^o) { XmlSerializer ^serializer =gcnew XmlSerializer( ????????????::typeid );
ich würde das gerne für belibige objekte gestalten wie hol ich mir den den type eines ojectes?
(o->GetType());
habe ich schon probiert funzt nich
-
In Deinen Headern fehlt dann wohl ein #include "stdafx.h" , Du solltest jedoch überlegen ob das dann der beste Weg ist die Daten zur Verfügung zu stellen. (Es kann zu abhängigkeiten kommen die sich nurnoch per forwarddeklaration lösen lassen).
-
wenn ich stdafx.h include geht es ja nich das hab ich ja versucht, das mit den abhängigkeiten versteh ich nicht. und weißt du wie ich den type oder halt klassenname bekomme der in object steckt?
-
[edit]
-
nameac schrieb:
ich würde das gerne für belibige objekte gestalten wie hol ich mir den den type eines ojectes?
Ich würde es nicht machen, da nicht jede Klasse dieses Xml-Serialisieren korrekt unterstützt (wie Du ja selber gesehen hast).
Aber rausbekommen kannst Du den Typ mittels
ref->GetType()
-
ah ich hab es mir mal ausgeben lassen weil die klasse OrderedItem teil des namespaces PitPlaner ist liefert GetType() PitPlaner.OrderedItem ich benötige aber PitPlaner::OrderedItem weiß da jemand weiter?
-
GetType liefert einen "Type" und keinen String!
-
Wie wäre es mit ersetzen von . durch :: ?
-
ja ich habe ja auch tostringgemacht nur zugucken was das für zeichen sindwie könnte man denn sowas ersetzen?
-