Ich habe eine Klasse mit dem Namen, die WebserviceType
ich vom Tool xsd.exe aus einer XSD-Datei erhalten habe.
Jetzt möchte ich eine Instanz eines WebServiceType
Objekts in eine Zeichenfolge deserialisieren . Wie kann ich das machen?
Das MethodCheckType
Objekt hat als Parameter ein WebServiceType
Array.
Mein erster Versuch war, als hätte ich ihn serialisiert: mit a XmlSerializer
und a StringWriter
(während der Serialisierung habe ich a verwendet StringReader
).
Dies ist die Methode, mit der ich das WebServiceType
Objekt serialisiere :
XmlSerializer serializer = new XmlSerializer(typeof(MethodCheckType));
MethodCheckType output = null;
StringReader reader = null;
// catch global exception, logg it and throw it
try
{
reader = new StringReader(path);
output = (MethodCheckType)serializer.Deserialize(reader);
}
catch (Exception)
{
throw;
}
finally
{
reader.Dispose();
}
return output.WebService;
Bearbeiten:
Vielleicht könnte ich es mit anderen Worten sagen: Ich habe eine Instanz dieses MethodCheckType
Objekts und andererseits habe ich das XML-Dokument, aus dem ich dieses Objekt serialisiert habe. Jetzt möchte ich diese Instanz in Form einer Zeichenfolge in ein XML-Dokument konvertieren. Danach muss ich prüfen, ob beide Zeichenfolgen (von XML-Dokumenten) gleich sind. Dies muss ich tun, weil ich Unit-Tests der ersten Methode durchführe, bei der ich ein XML-Dokument StringReader
in ein MethodCheckType
Objekt einlese und es in ein Objekt serialisiere .
quelle
Antworten:
Hier sind Konvertierungsmethoden für beide Möglichkeiten. this = Instanz Ihrer Klasse
quelle
using
Muster- oder AufrufmethodeDispose
für die korrekte Freigabe von Ressourcen verwenden.using
? @KvanTTT?Mir ist klar, dass dies ein sehr alter Beitrag ist, aber nachdem ich mir die Antwort von LB angesehen hatte, dachte ich darüber nach, wie ich die akzeptierte Antwort verbessern und sie für meine eigene Bewerbung generisch machen könnte. Folgendes habe ich mir ausgedacht:
Diese Methoden können jetzt in eine statische Hilfsklasse eingefügt werden. Dies bedeutet, dass keine Code-Duplizierung für jede Klasse erfolgt, die serialisiert werden muss.
quelle
quelle
Dies ist meine Lösung. Für jedes Listenobjekt können Sie diesen Code zum Konvertieren in ein XML-Layout verwenden. KeyFather ist Ihr Haupt-Tag und KeySon ist der Startpunkt Ihrer Forech.
quelle