XmlSchemaValidator.GetExpectedParticles Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt die erwarteten Partikel im aktuellen Elementkontext zurück.
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()
Gibt zurück
Ein Array von XmlSchemaParticle Objekten oder ein leeres Array, wenn keine erwarteten Partikel vorhanden sind.
Hinweise
Die gültigen Partikel, die von der GetExpectedParticles Methode zurückgegeben werden können, sind Instanzen der XmlSchemaElement Klassen und XmlSchemaAny Instanzen.
Wenn der Kompositor für das Inhaltsmodell ein xs:sequenceist, wird nur das nächste Partikel in der Sequenz zurückgegeben. Wenn der Kompositor des Inhaltsmodells ein xs:all oder ein xs:choice ist, werden alle gültigen Partikel, die im aktuellen Elementkontext folgen könnten, zurückgeliefert.
Beispiel: Im XML Schema Definition Language (XSD)-Schema und XML-Dokument, das nach der Überprüfung des book Elements folgt, ist das book Element der aktuelle Elementkontext. Die GetExpectedParticles Methode gibt ein Array zurück, das ein einzelnes XmlSchemaElement Objekt enthält, das das title Element darstellt. Wenn der Gültigkeitsprüfungskontext das title Element ist, gibt die GetExpectedParticles Methode ein leeres Array zurück. Wenn die GetExpectedParticles Methode aufgerufen wird, nachdem das title Element überprüft wurde, aber bevor das description Element überprüft wurde, wird ein Array zurückgegeben, das ein einzelnes XmlSchemaElement Objekt enthält, das das description Element darstellt. Wenn die GetExpectedParticles Methode aufgerufen wird, nachdem das description Element überprüft wurde, wird ein Array zurückgegeben, das ein einzelnes XmlSchemaAny Objekt enthält, das den Wildcard darstellt.
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);
Im Beispiel wird der folgende XML-Code als Eingabe verwendet.
<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>
Im Beispiel wird das folgende XSD-Schema als Eingabe verwendet.
<book>
<title>My Book</title>
<description>My Book's Description</description>
<namespace>System.Xml.Schema</namespace>
</book>