Savon - Element n'a pas xsi: nil comme une propriété, mais désérialisation ne fait pas l'objet non nul

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

Question

Je suis un noob totale en ce qui concerne les messages XML et SOAP. ... Voici le message 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>

Nous avons généré les classes avec l'outil xsd.exe qui nous a donné des cours à deserialize à. Ce fichier xsd a été fourni par l'entreprise, nous recevons les messages SOAP de.

Voici la question. Quand nous recevons ce type de retour de réponse de la société, nous recherchons au sein CSCallbackRequest pour ces trois éléments à l'intérieur, les CDS, CDRP et IDU. Nous essayons de déterminer quel type de rappel que nous recevons. Mon hypothèse de départ était quand nous utilisons un XMLSerializer avec le type ( Generated de type classe ), l'élément dans CSCallbackRequest qui n'a pas le xsi: nil = true pourrait permettre à l'objet dans le Generated Type de classe objet ne serait pas nulle. Mais ce n'est pas le cas. Comment puis-je vérifier si une propriété avec le ne pas le xsi: proprerty nul après désérialisation

Était-ce utile?

La solution

En fait, je me suis dit sur la question. Le message SOAP je mets ici est en fait un exemple de la documentation de l'entreprise. Je tentais d'utiliser comme maquette pour un message que nous allions recevoir. Après avoir comparé les fichiers de classe générés par la XSD, j'ai remarqué que le <CS> n'a pas été réellement défini dans les fichiers. Quand il a été désérialisation, il ne trouverait pas cet élément, donc rien Populate, puisque nous avons commencé désérialisation de l'élément <Data> et au-delà. J'ai vérifié les autres exemples dans la documentation et ceux ne pas cet élément de <CS> supplémentaire. Retrait de cet élément fixe toute cette question. Je l'ai informé l'entreprise de leur erreur dans la documentation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top