Freigeben über


XmlSchemaSet.RemoveRecursive(XmlSchema) Methode

Definition

Entfernt das angegebene XSD-Schema (XML Schema Definition Language) und alle Schemas, die aus dem XmlSchemaSet importiert werden.

public:
 bool RemoveRecursive(System::Xml::Schema::XmlSchema ^ schemaToRemove);
public bool RemoveRecursive (System.Xml.Schema.XmlSchema schemaToRemove);
member this.RemoveRecursive : System.Xml.Schema.XmlSchema -> bool
Public Function RemoveRecursive (schemaToRemove As XmlSchema) As Boolean

Parameter

schemaToRemove
XmlSchema

Das aus der XmlSchema zu entfernende XmlSchemaSet-Objekt.

Gibt zurück

true, wenn das XmlSchema-Objekt und alle zugehörigen Importe erfolgreich entfernt wurden, andernfalls false.

Ausnahmen

Der als Parameter übergebene XmlSchema entspricht null.

Beispiele

Im folgenden Codebeispiel wird das Hinzufügen mehrerer Schemas zu einem XmlSchemaSetveranschaulicht. Anschließend wird eines der Schemas und alle Schemas entfernt, die mithilfe der RemoveRecursive -Methode importiert werden.

Dim schemaSet As XmlSchemaSet = New XmlSchemaSet()
schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd")
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd")
schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd")

Dim schema As XmlSchema

For Each schema In schemaSet.Schemas()

    If schema.TargetNamespace = "http://www.contoso.com/music" Then
        schemaSet.RemoveRecursive(schema)
    End If

Next
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add("http://www.contoso.com/retail", "http://www.contoso.com/retail.xsd");
schemaSet.Add("http://www.contoso.com/books", "http://www.contoso.com/books.xsd");
schemaSet.Add("http://www.contoso.com/music", "http://www.contoso.com/music.xsd");

foreach (XmlSchema schema in schemaSet.Schemas())
{
    if (schema.TargetNamespace == "http://www.contoso.com/music")
    {
        schemaSet.RemoveRecursive(schema);
    }
}

Hinweise

Die RemoveRecursive -Methode entfernt das angegebene Schema und alle schemas, die sie aus importiert XmlSchemaSet, solange keine Abhängigkeiten vom Schema oder den importierten Schemas bestehen. Wenn Abhängigkeiten vom Schema oder seinen importierten Schemas in vorhanden XmlSchemaSetsind, wird nichts entfernt und RemoveRecursive gibt zurück false. Wenn false zurückgegeben und ein ValidationEventHandler definiert ist, wird eine Warnung an den Ereignishandler gesendet, der die Abhängigkeiten beschreibt.

Wenn das angegebene Schema andere Schemas importiert und das angegebene Schema zuvor mit der Remove -Methode entfernt wurde, entfernt die RemoveRecursive Methode die importierten Schemas nicht und gibt zurück false. Beispielsweise, wenn parentSchema Importe childSchema1 und childSchema2 der folgende Code nur entfernt parentSchema, aber nicht die importierten childSchema1 Schemas und childSchema2 :

XmlSchemaSet ss = new XmlSchemaSet();
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);
ss.Add(xs);
ss.Compile();
ss.Remove(xs);
ss.Compile();
ss.RemoveRecursive(xs);
ss.Compile();

Der folgende Code entfernt die parentSchema und die importierten Schemas:

XmlSchemaSet ss = new XmlSchemaSet();
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);
ss.Add(xs);
ss.Compile();
ss.RemoveRecursive(xs);
ss.Compile();

Die RemoveRecursive -Methode hat keine Auswirkungen auf den Zustand der IsCompiled Eigenschaft.

Gilt für: