Soap - 要素にはプロパティとして xsi:nil がありませんが、逆シリアル化してもオブジェクトが null ではなくなりません

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

質問

XML と SOAP メッセージに関しては、私は全くの初心者です。...これが 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>

xsd.exe ツールを使用してクラスを生成し、逆シリアル化するクラスを提供しました。この .xsd ファイルは、SOAP メッセージの受信元である会社によって提供されました。

ここが問題です。会社からこのタイプの応答を受け取ると、CSCallbackRequest 内で CDS、CDRP、UDI という 3 つの要素を探します。受信しているコールバックのタイプを判断しようとしています。私の最初の仮定は、タイプ (生成されたクラスの種類)、xsi:nil=true を持たない CSCallbackRequest 内の要素は、 生成されたクラスの種類 オブジェクトは null にはなりません。しかしそうではありません。逆シリアル化後に、 を持つプロパティに xsi:nil プロパティがないかどうかを確認するにはどうすればよいですか?

役に立ちましたか?

解決

実は、私はこの問題を考え出しました。私はここに置かSOAPメッセージは、実際には、同社のドキュメントからの例です。私たちは受け取るだろうとのメッセージのためのモックアップとしてこれを使用しようとしました。 XSDから生成されたクラスファイルを比較した後、私は<CS>が実際のファイルで定義されていなかったことに気づきました。それはデシリアライズされたとき、我々は<Data>要素以降からデシリアライズ開始して以来、それは、その要素、それゆえ移入何も見つけられないでしょう。私は、ドキュメント内の他の例を確認し、それらは、この余分な<CS>要素を持っていませんでした。その要素の削除すると、この全体の問題を修正しました。私は、ドキュメントでそのエラーの会社を通知してきます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top