谈到 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。我们正在尝试确定我们正在接收哪种类型的回调。我最初的假设是,当我们使用类型为(Generated Class Type)的 XMLSerializer 时,CSCallbackRequest 中没有 xsi:nil=true 的元素将允许Generated Class Type对象中的对象不为空。但事实并非如此。如何在反序列化后检查具有 的属性是否没有 xsi:nil 属性?