Soap - Elemento non ha xsi: nil come una proprietà, ma deserializzazione non fa il nulla non oggetto

StackOverflow https://stackoverflow.com/questions/3815081

Domanda

Sono un noob totale quando si tratta di messaggi XML e SOAP. ... Ecco il messaggio SOAP.

<?xml version="1.0" encoding="utf-8" ?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <CR>
            <Username xmlns="<Hidden>">mtas</Username>
            <Password xmlns="<Hidden>">password</Password>
            <id xmlns="<Hidden>">
                70dad12b-bb50-402d-8b34-
                fe2d4c0c283d
            </id>
            <Data xmlns="<Hidden>">
                <Data xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns="<Hidden>">
                    <CS>
                        <CSCallbackRequest xmlns="">
                            <CDS xsi:nil="true" xmlns="<Hidden>"/>
                            <CDRP xmlns="<Hidden>"/>
                            <UDI xsi:nil="true"
                            xmlns="<Hidden>"/>
                        </CSCallbackRequest>
                    </CS>
                    <Fault xsi:nil="true" />
                    <Comment xsi:nil="true"/>
                </Data>
            </Data>
        </CR>
    </s:Body>
</s:Envelope>

Abbiamo generato le classi con lo strumento xsd.exe che ci ha dato lezioni di deserializzare a. Questo file XSD è stato fornito dalla società che stiamo ricevendo i messaggi SOAP da.

Ecco il problema. Quando riusciamo ad ottenere questo tipo di risposta indietro da parte della società, stiamo cercando all'interno CSCallbackRequest per quei tre elementi all'interno, il CDS, CDRP e UDI. Stiamo cercando di determinare quale tipo di callback che stiamo ricevendo. La mia ipotesi iniziale era quando usiamo un XMLSerializer con il tipo ( Generated Classe Tipo ), l'elemento all'interno CSCallbackRequest che non ha il xsi: nil = true permetterebbe l'oggetto all'interno del Generated Tipo Classe oggetto non sarebbe nullo. Ma questo non è il caso. Come faccio a verificare se una proprietà con l'non ha il xsi:? Proprerty nil dopo deserializzazione

È stato utile?

Soluzione

In realtà, ho capito il problema. Il messaggio SOAP ho messo qui è in realtà un esempio dalla documentazione della società. Stavo tentando di utilizzare questo come un up finto per un messaggio che avremmo ricevuto. Dopo aver confrontato i file di classe generati dalla XSD, ho notato che il <CS> non è stato effettivamente definito nei file. Quando è stato deserializzazione, non avrebbe trovato tale elemento, pertanto popolano nulla, da quando abbiamo iniziato la deserializzazione dall'elemento <Data> e oltre. Ho controllato gli altri esempi nella documentazione e quelli che non avevano questo elemento <CS> supplementare. Rimozione di detto elemento fisso intera questione. Ho avvertito la compagnia del loro errore nella documentazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top