Objekt als SOAP-XML Serialisieren

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Objekt als SOAP-XML Serialisieren

    Hallo zusammen,

    ich brauche mal eure Hilfe bezüglich der Serialisierung eines Objekts als SOAP-XML.

    Ich habe hier schon mal einen Ansatz:

    C#-Quellcode

    1. XmlTypeMapping myTypeMapping = new SoapReflectionImporter().ImportTypeMapping(typeof(ShipmentRequestType));
    2. XmlSerializer serializer = new XmlSerializer(myTypeMapping);
    3. StringWriter tw = new StringWriter();
    4. serializer.Serialize(tw,shipment);


    Allerdings resultiert dies immer in
    Token StartElement im Status Epilog würde in einem ungültigen XML-Dokument resultieren.

    hat Jemand von euch vielleicht eine Idee, wie ich das Objekt als SOAP-XML Serialisieren kann?

    LG Marvin
    Ja da wurde der falsche Formatter genommen.

    Wenn ich einen Tip geben darf, wechsle gleich zu DataContract-Serialisierer oder JSON. Beide sind auch für Objekte mit Circular Reference (einstellbar mit PreserveObjectReferences) .
    DataContract ist eine Xml-Serialisierung von WCT. Easy und schnell in der Anwendung.

    Hier der Link
    docs.microsoft.com/en-us/dotne…/data-contract-serializer
    docs.microsoft.com/de-de/dotne…n.xsddatacontractexporter?

    Freundliche Grüsse

    exc-jdbi

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „exc-jdbi“ ()

    @MarvinKleinMusic Ansonsten ist das Soap-Format nicht mehr up to date und soll durch das BinaryFormat ersetzt werden.
    In C# sieht das dann z.B. so aus (aus einem alten Projekt):
    Spoiler anzeigen

    C#-Quellcode

    1. using System.Collections;
    2. using System.IO;
    3. using System.Runtime.Serialization.Formatters.Soap;
    4. namespace Tools
    5. {
    6. /// <summary>
    7. /// Soap-Format-Klasse
    8. /// </summary>
    9. public static class SoapFile
    10. {
    11. #region Soap Stuff
    12. /// <summary>
    13. /// Deserialisieren
    14. /// </summary>
    15. /// <typeparam name="T"></typeparam>
    16. /// <param name="obj"></param>
    17. /// <param name="filename"></param>
    18. public static void DeserializeObject<T>(ref T obj, string filename)
    19. {
    20. // T DeserializeObject<T>() geht leider nicht
    21. using (FileStream fs = new FileStream(filename, FileMode.Open))
    22. {
    23. SoapFormatter soapFormatter = new SoapFormatter();
    24. obj = (T)soapFormatter.Deserialize(fs);
    25. }
    26. }
    27. /// <summary>
    28. /// ArrayList-Objekt speichern
    29. /// </summary>
    30. /// <param name="arr"></param>
    31. /// <param name="filename"></param>
    32. public static void SaveObject(ArrayList arr, string filename)
    33. {
    34. using (FileStream fs = new FileStream(filename, FileMode.Create))
    35. {
    36. SoapFormatter soapFormatter = new SoapFormatter();
    37. soapFormatter.Serialize(fs, arr);
    38. }
    39. }
    40. #endregion Soap Stuff
    41. }
    42. }
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    Soap-Format nicht mehr up to date und soll durch das BinaryFormat ersetzt werden
    Nanu? nie von gehört.
    Kann ein SoapFormatter dieses fabelhafte BinaryFormat generieren?

    Ich frag auch deshalb, weil auf arbeit hampeln wir mit Wcf herum, und iwo in ieiner Schicht wird da auch herum-gesoapt - ich darf da immer garnet hingugge, was da für ein Over-Over-Over-Overhead getrieben wird, um eine Datensatzes KundeName abzufragen - das ist schon nicht mehr klimaneutral, allein was das an Strom frisst.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    @ErfinderDesRades Nö.
    Hinweis
    Ab .NET Framework 2,0 ist diese Klasse veraltet. Verwenden Sie stattdessen BinaryFormatter.

    docs.microsoft.com/de-de/dotne…ter?view=netframework-4.8
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!