XmlSchemaSet.RemoveRecursive(XmlSchema) Méthode

Définition

Supprime le schéma en langage XSD (XML Schema Definition) spécifié et tous les schémas qu'il importe de XmlSchemaSet.

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

Paramètres

schemaToRemove
XmlSchema

Objet XmlSchema à supprimer de XmlSchemaSet.

Retours

true si l'objet XmlSchema et toutes ses importations ont été supprimés ; sinon, false.

Exceptions

XmlSchema passé en tant que paramètre est null.

Exemples

L’exemple de code suivant illustre l’ajout de plusieurs schémas à un XmlSchemaSet, puis la suppression de l’un des schémas et de tous les schémas importés à l’aide de la RemoveRecursive méthode .

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);
    }
}

Remarques

La RemoveRecursive méthode supprime le schéma spécifié et tous les schémas qu’elle importe du XmlSchemaSet, tant qu’il n’existe aucune dépendance sur le schéma ou ses schémas importés. S’il existe des dépendances sur le schéma ou ses schémas importés dans , XmlSchemaSetrien n’est supprimé et RemoveRecursive retourne false. Si false est retourné et qu’un ValidationEventHandler est défini, un avertissement est envoyé au gestionnaire d’événements décrivant les dépendances.

Si le schéma spécifié importe d’autres schémas et que le schéma spécifié a été précédemment supprimé avec la Remove méthode, la RemoveRecursive méthode ne supprime pas les schémas importés et retourne false. Par exemple, si parentSchema importe childSchema1 et childSchema2 que le code suivant supprime parentSchemauniquement , mais pas les schémas et childSchema2 importés childSchema1 :

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();

Le code suivant supprime les parentSchema schémas importés et :

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

La RemoveRecursive méthode n’a aucun effet sur l’état de la IsCompiled propriété.

S’applique à