发布使用XSD反序列化字符串

我在尝试使用XSD反序列化XML字符串时遇到了麻烦。 我正在使用c#/ Asp.Net和DataContractSerializer。

这是从第三方返回的字符串:

 11625807 Declined 1  No Qualified Buyers Found  

这是我正在尝试创建的类:

 [DataContract(Name = "ApplicationResponse", Namespace = "")] public class SCFResponse { [DataMember] public string Id { get; set; } [DataMember] public string Status { get; set; } [DataMember] public string Response { get; set; } [DataMember] public decimal Price { get; set; } [DataMember] public string Detail { get; set; } } 

一切正常,直到我尝试validation我的XSD。 我不是这里的专家,所以它可能很简单。

顺便说一下,我试图实现的,也许是错误的,是对“被接受的”,拒绝的“或”拒绝的“子部分之一进行validation。

                                                              

这是我正在记录的消息:

元素’ApplicationResponse’具有无效的子元素’Id’。 预期可能元素列表:’已接受’。| Stack:0 – Xml:129;

任何建议表示赞赏

声明以下序列时:

         

这意味着您期望的XML类似于:

  ... ... ...  

您应该尝试将类型合并为一个,因为它们使用相同的标记,有时是可选的。 为此,您必须摆脱3种不同的枚举简单类型:

       ...        

这将validation您的输入,但它仍然允许具有Status = rejected的XML和例如Id pr Price。

在最新的情况下,您可以尝试使用xs:choice而不是xs:sequence来实现另一个xsd。 但我不确定您可以使用不同类型的Status元素。

为了快速validation,您可以尝试免费的在线XML – XSDvalidation器,因为您的情况很小,您可以轻松地做到这一点。

另外,请注意序列定义:

  • XSD中的价格不能为空
  • 详细信息simpleType与您的示例不匹配(https:// …)
  • 您的XSD中没有详细的响应类型