
Originariamente inviata da
sspintux
estrai e deserializza solo il payload , ovvero il contenuto del soap body;
...una cosa del genere supponendo che il messaggio soap sia in un file
codice:
XmlDocument doc = new XmlDocument();
doc.Load(@"c:\temp\soap.xml");
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("soap-env","http://schemas.xmlsoap.org/soap/envelope/");
XmlElement ex = (XmlElement) doc.DocumentElement.SelectSingleNode("soap-env:Body", nsmgr);
//e poi vai di xmlSerializie(typeof(....))
Ciao e grazie di nuovo per la risposta...
Ho provato a fare come mi hai detto ma il risultato è sempre..."Errore nel documento Xml (1, 2)"
Ecco il codice (dove dettaglioAutoveicoloComproprietariTrasferimentiRes Response è la classe restiutita dal tool xsd):
codice:
Dim a As New dettaglioAutoveicoloComproprietariTrasferimentiResResponse
Dim doc As New System.Xml.XmlDocument()
doc.Load("c:\Prova\Error.xml")
Dim nsmgr As New System.Xml.XmlNamespaceManager(doc.NameTable)
nsmgr.AddNamespace("soap-env", "http://schemas.xmlsoap.org/soap/envelope/")
Dim ex As System.Xml.XmlElement = doc.DocumentElement.SelectSingleNode("soap-env:Body", nsmgr)
Arrivato qui: ho provato ad utilizzare 3 "tipologie" di serializzazione:
PRIMA: (restituisce "Errore nel documento Xml (1, 2)")
codice:
'Serialiazzatore
Dim ser As New XmlSerializer(GetType(dettaglioAutoveicoloComproprietariTrasferimentiResResponse))
a = CType(ser.Deserialize(New StringReader(ex.OuterXml)), dettaglioAutoveicoloComproprietariTrasferimentiResResponse)
SECONDA: (restituisce "Errore nel documento Xml (1, 2)")
[CODE]
Dim myTypeMapping As XmlTypeMapping = (New SoapReflectionImporter().ImportTypeMapping(GetType (dettaglioAutoveicoloComproprietariTrasferimentiRe sResponse)))
Dim mySerializer As XmlSerializer = New XmlSerializer(myTypeMapping)
a = CType(mySerializer.Deserialize(New StringReader(ex.OuterXml)), dettaglioAutoveicoloComproprietariTrasferimentiRes Response)
[CODE]
TERZA: (L'oggetto "SoapFormatter", non accetta StringReader come parametro del metodo "Deserialize" e non so cosa passargli)
codice:
Dim formatter As New SoapFormatter
a = DirectCast(formatter.Deserialize(xxxxxxx, dettaglioAutoveicoloComproprietariTrasferimentiResResponse)
Grazie