假设我有这个 XmlSchema 片段:
<xs:element name= "A">
<xs:complexType>
<xs:sequence>
<xs:element ref="A1" maxOccurs="1"/>
<xs:element ref="A2" maxOccurs="unbounded"/>
<xs:element ref="A3" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我使用 XmlSchemaValidator.GetExpectedParticles() 方法循环进入 A 的孩子。因为 complexType 是一个序列,所以要验证同级,我需要验证前一个,退出上下文,然后 GetExpectedPartciles() 才会返回下一个同级。
因此,当我在列表的 A1 项中时,我调用这些代码行:
validator.ValidateElement("A1", null, null); --> validate and enter in the Context of A1
validator.ValidateEndOfAttributes(null); --> End the validation of Attributes
validator.SkipToEndElement(null); --> Exit from the context; only when the ComplexType is a Sequence
当我到达 A2 元素时,GetExpeectedParticles 会像循环一样返回相同的元素 A2,但我无法到达 A3 元素(或者我不知道该怎么做)。我想这是因为 maxoccurs 是无限的。
所以问题是我怎样才能跳到下一个兄弟A3?