Ich arbeite an einem .NET-Projekt, das mit einem externen Unternehmen integriert ist. Diese Firma sendet uns XML-Nachrichten über HTTP POST (Roh-XML, nicht SOAP). Es gibt grundsätzlich drei verschiedene Arten von XML-Nachrichten, die sie uns senden, die alle ihre eigenen XSDs haben. Es gibt keine Vererbungshierarchie zwischen diesen XSDs, sie sind alle im Grunde eigenständige XML-Entitäten.XML HTTP POST-Integration in .NET
Im Moment verwenden wir nur eine IHttpHandler .ashx-Klasse, um das XML zu verarbeiten. Wir haben aus jeder XSD eine Klasse erstellt und verwenden XmlSerializer, um die verschiedenen XML-Nachrichten in Objekte zu konvertieren. Dies ist nicht ideal, da wir den Nachrichtentyp kennen müssen, bevor Sie den entsprechenden XmlSerializer zur Verarbeitung erstellen. Wir schauen uns gerade den Namen des Root-Elements in der Nachricht an, um zu entscheiden, welcher Typ an den XmlSerializer übergeben werden soll.
Es muss einen besseren Weg geben, dies zu tun ... Gibt es etwas in WCF, das dies automatisch mit einfachem XML tun kann? Oder ist ein XML-Serializer verfügbar, der mehrere Typen dynamisch serialisieren kann? Irgendwelche anderen Vorschläge?
Nicht alle XML-Daten können in ein DataSet gelesen werden. –
Das stimmt natürlich. Aber er hat gesagt, dass er mit dem xsd Klassen erstellt hat. Das bedeutete für mich, dass die XML-Datei wahrscheinlich nicht komplex genug war, um die Verwendung eines Datasets auszuschließen. Es wird nicht mit allem XML funktionieren, aber wenn es das tut, gibt es erhebliche Vorteile - Sortieren, einfache Anzeige der Ergebnisse und so weiter. –
Die einzige XSD, die Daten darstellen kann, die in ein DataSet geladen werden können, ist eine XSD, die zur Darstellung eines DataSets erstellt wurde. XSD ist viel allgemeiner als die kleine Teilmenge, die vom DataSet-Designer in Visual Studio verwendet wird. –