发布使用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中没有详细的响应类型