【发布时间】:2015-12-10 12:07:15
【问题描述】:
验证过程中出现的错误是:
The element 'Details' in namespace
'<-namespace->' has incomplete content. List of possible elements expected:
'PersonAddress' in namespace '<-namespace->'.
架构如下(为了便于阅读,删除了大部分内容):
<xs:complexType name="Person">
<xs:all>
<xs:element minOccurs="1" maxOccurs="1" name="Details" type="PersonDetails" />
</xs:all>
</xs:complexType>
<xs:complexType name="PersonDetails">
<xs:all>
<xs:element minOccurs="1" maxOccurs="1" nillable="true" name="PersonAddress" type="PersonAddress" />
</xs:all>
</xs:complexType>
<xs:complexType name="PersonAddress">
<xs:all>
<xs:element minOccurs="1" maxOccurs="1" name="Street" type="xs:string" />
<xs:element minOccurs="1" maxOccurs="1" nillable="true" name="ZipCode" type="xs:int" />
</xs:all>
</xs:complexType>
当我使用 Schema 和我的 DTO 序列化到 XML 时,我将 PersonAddress 映射到 null 或反映“PersonAddress”的对象
我除了我的最终 xml 变成这样:
</PersonDetails>
<PersonAddress xsi:nil="true" />
</PersonDetails>
相反,我在针对 xsd 架构进行验证期间遇到错误,如本文开头所述。
当我在 PersonDetails 中的 PersonAddress 上将 minOccurs 设置为零时,它工作正常:
<xs:element minOccurs="0" maxOccurs="1" nillable="true" name="PersonAddress" type="PersonAddress" />
但是问题是,当我将映射对象设置为“null”时,该元素根本不会显示。它不存在。
我在 xsd 架构中遗漏了什么?
【问题讨论】:
-
您的问题看起来错误或不完整 - 您的错误消息涉及
Details元素,但您的架构和 XML 未显示任何Details元素。那应该是PersonDetails元素吗? -
@MattJones Details 元素是 Person 中 xs:element 的名称。 Details 是 PersonDetails 的类型
-
啊,是的,你是对的。我没有在脑海中解析那一点!
标签: xml xsd xsd-validation xml-validation