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

Boolean

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 qu’il importe à 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’il importe de XmlSchemaSet , à condition qu’il n’y ait pas de dépendances 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 XmlSchemaSet , rien 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 childSchema1 les importations et childSchema2 le code suivant ne suppriment parentSchema , mais pas les schémas importés childSchema1 et 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();  

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

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 à