我是一个总的小白,当涉及到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。我们正试图确定我们收到的这类型的回调的。我的初始假设是当我们使用一个XmlSerializer与类型(生成的类类型的),即不具有的xsi内CSCallbackRequest元素:无=真将使生成的类型中的对象对象将不能为空。但这种情况并非如此。如何检查是否与属性不具备XSI:无proprerty反序列化后

有帮助吗?

解决方案

其实,我想通了这个问题。我把这里的SOAP消息实际上是从公司的文档的例子。我试图用这个作为模拟了一个消息,我们会接受。生成的类文件从XSD比较之后,我注意到<CS>未在文件实际上定义。当它被反序列化,就不会找到该元素,因此填入任何操作,因为我们开始从<Data>元素和反序列化之外。我检查了其他的例子在文档和那些没有这种额外的<CS>元素。该元素的拆卸固定这整个问题。我已经通知他们的文档错误的公司。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top