1

この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要素に到達すると、GetExpetectedParticlesは、ループの場合と同様に、同じ要素A2を返し、A3要素に到達できません(または方法がわかりません)。これは、maxoccursに制限がないためだと思います。

だから問題は、どうすれば次の兄弟A3にジャンプできますか?

4

1 に答える 1

1

GetExpectedParticles()は、A2とともにA3を返します。したがって、ループから抜け出したい場合は、配列内の次の項目の検証を続行し、現在のMaxOccursString = "unbounded"の場合はGetExpectedParticles()を再度呼び出さないでください。

于 2012-07-27T23:26:08.120 に答える