具有嵌套复杂类型的验证错误 xsd 架构
Validation error xsd schema with nested complex types
验证时出现的错误是:
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>
当我使用架构和我的 DTO:s 序列化到 XML 时,我将 PersonAddress 映射到 null 或反映 'PersonAddress'
的对象
除了我最后的 xml 结果是这样的:
</PersonDetails>
<PersonAddress xsi:nil="true" />
</PersonDetails>
相反,我在针对 xsd 模式进行验证时遇到错误,如本 post 中首先解释的那样。
当我将 PersonDetails 中的 PersonAddress 的 minOccurs 设置为零时,它工作正常:
<xs:element minOccurs="0" maxOccurs="1" nillable="true" name="PersonAddress" type="PersonAddress" />
但问题是当我将映射对象设置为 'null' 时,该元素根本不显示。它不存在。
我在 xsd 架构中遗漏了什么?
好的,所以我在 DTO 中犯了一个错误。
现在它已启动并正在处理此更改:
[XmlElement(IsNullable = true)]
public PersonAddress PersonAddress { get; set; }
忘记将 IsNullable 标记添加到 DTO 属性。
自我提醒,在发布到 Stack Overflow 之前检查是否有脑残..
验证时出现的错误是:
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>
当我使用架构和我的 DTO:s 序列化到 XML 时,我将 PersonAddress 映射到 null 或反映 'PersonAddress'
的对象除了我最后的 xml 结果是这样的:
</PersonDetails>
<PersonAddress xsi:nil="true" />
</PersonDetails>
相反,我在针对 xsd 模式进行验证时遇到错误,如本 post 中首先解释的那样。
当我将 PersonDetails 中的 PersonAddress 的 minOccurs 设置为零时,它工作正常:
<xs:element minOccurs="0" maxOccurs="1" nillable="true" name="PersonAddress" type="PersonAddress" />
但问题是当我将映射对象设置为 'null' 时,该元素根本不显示。它不存在。
我在 xsd 架构中遗漏了什么?
好的,所以我在 DTO 中犯了一个错误。
现在它已启动并正在处理此更改:
[XmlElement(IsNullable = true)]
public PersonAddress PersonAddress { get; set; }
忘记将 IsNullable 标记添加到 DTO 属性。
自我提醒,在发布到 Stack Overflow 之前检查是否有脑残..