XmlSchemaValidator.GetExpectedParticles Metodo

Definizione

Restituisce le particelle previste nel contesto dell'elemento corrente.

public:
 cli::array <System::Xml::Schema::XmlSchemaParticle ^> ^ GetExpectedParticles();
public System.Xml.Schema.XmlSchemaParticle[] GetExpectedParticles();
member this.GetExpectedParticles : unit -> System.Xml.Schema.XmlSchemaParticle[]
Public Function GetExpectedParticles () As XmlSchemaParticle()

Valori restituiti

Matrice di XmlSchemaParticle oggetti o matrice vuota se non sono presenti particelle previste.

Commenti

Le particelle valide che possono essere restituite dal GetExpectedParticles metodo sono istanze delle XmlSchemaElement classi e XmlSchemaAny .

Nel modello di contenuto, quando il compositor è di tipo xs:sequence, viene restituita solo la particella successiva nella sequenza. Se il compositore del modello di contenuto è un xs:all o un xs:choice, allora vengono restituite tutte le particelle valide che potrebbero seguire nel contesto dell'elemento corrente.

Ad esempio, nello schema e nel documento XML che seguono, dopo la convalida dell'elemento book, l'elemento book diventa il contesto dell'elemento corrente. Il GetExpectedParticles metodo restituisce una matrice contenente un singolo XmlSchemaElement oggetto che rappresenta l'elemento title . Quando il contesto di convalida è l'elemento title , il GetExpectedParticles metodo restituisce una matrice vuota. Se il GetExpectedParticles metodo viene chiamato dopo la convalida dell'elemento title , ma prima che l'elemento description sia stato convalidato, restituisce una matrice contenente un singolo XmlSchemaElement oggetto che rappresenta l'elemento description . Se il metodo GetExpectedParticles viene chiamato dopo che l'elemento description è stato convalidato, restituisce un array contenente un singolo oggetto XmlSchemaAny che rappresenta il carattere jolly.

Dim reader As XmlReader =  XmlReader.Create("input.xml")

Dim schemaSet As XmlSchemaSet =  New XmlSchemaSet()
schemaSet.Add(Nothing, "schema.xsd")
Dim manager As XmlNamespaceManager =  New XmlNamespaceManager(reader.NameTable)

Dim validator As XmlSchemaValidator =  New XmlSchemaValidator(reader.NameTable,schemaSet,manager,XmlSchemaValidationFlags.None)
validator.Initialize()

validator.ValidateElement("book", "", Nothing)
validator.GetUnspecifiedDefaultAttributes(New ArrayList())
validator.ValidateEndOfAttributes(Nothing)
For Each element As XmlSchemaElement In validator.GetExpectedParticles()
    Console.WriteLine(element.Name)
Next

validator.ValidateElement("title", "", Nothing)
validator.GetUnspecifiedDefaultAttributes(New ArrayList())
validator.ValidateEndOfAttributes(Nothing)
For Each element As XmlSchemaElement In validator.GetExpectedParticles()
    Console.WriteLine(element.Name)
Next
validator.ValidateEndElement(Nothing)

For Each element As XmlSchemaElement In validator.GetExpectedParticles()
    Console.WriteLine(element.Name)
Next

validator.ValidateElement("description", "", Nothing)
validator.GetUnspecifiedDefaultAttributes(New ArrayList())
validator.ValidateEndOfAttributes(Nothing)
validator.ValidateEndElement(Nothing)

For Each particle As XmlSchemaParticle In validator.GetExpectedParticles()
    Console.WriteLine(particle.GetType())
Next

validator.ValidateElement("namespace", "", Nothing)
validator.GetUnspecifiedDefaultAttributes(New ArrayList())
validator.ValidateEndOfAttributes(Nothing)
validator.ValidateEndElement(Nothing)

validator.ValidateEndElement(Nothing)
XmlReader reader = XmlReader.Create("input.xml");

XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, "schema.xsd");
XmlNamespaceManager manager = new XmlNamespaceManager(reader.NameTable);

XmlSchemaValidator validator = new XmlSchemaValidator(reader.NameTable, schemaSet, manager, XmlSchemaValidationFlags.None);
validator.Initialize();

validator.ValidateElement("book", "", null);

validator.GetUnspecifiedDefaultAttributes(new ArrayList());
validator.ValidateEndOfAttributes(null);
foreach (XmlSchemaElement element in validator.GetExpectedParticles())
{
    Console.WriteLine(element.Name);
}

validator.ValidateElement("title", "", null);
validator.GetUnspecifiedDefaultAttributes(new ArrayList());
validator.ValidateEndOfAttributes(null);
foreach (XmlSchemaElement element in validator.GetExpectedParticles())
{
    Console.WriteLine(element.Name);
}
validator.ValidateEndElement(null);

foreach (XmlSchemaElement element in validator.GetExpectedParticles())
{
    Console.WriteLine(element.Name);
}

validator.ValidateElement("description", "", null);
validator.GetUnspecifiedDefaultAttributes(new ArrayList());
validator.ValidateEndOfAttributes(null);
validator.ValidateEndElement(null);

foreach (XmlSchemaParticle particle in validator.GetExpectedParticles())
{
    Console.WriteLine(particle.GetType());
}

validator.ValidateElement("namespace", "", null);
validator.GetUnspecifiedDefaultAttributes(new ArrayList());
validator.ValidateEndOfAttributes(null);
validator.ValidateEndElement(null);

validator.ValidateEndElement(null);

L'esempio accetta il codice XML seguente come input.

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="book">

<xs:complexType>

<xs:sequence>

<xs:element name="title" type="xs:string" />

<xs:element name="description" type="xs:string" />

<xs:any processContents ="lax"/>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:schema>

L'esempio accetta lo schema XSD seguente come input.

<book>

<title>My Book</title>

<description>My Book's Description</description>

<namespace>System.Xml.Schema</namespace>

</book>

Si applica a

Vedi anche