XmlSchemaSet.RemoveRecursive(XmlSchema) Metodo

Definizione

Rimuove lo schema XSD (XML Schema Definition Language) specificato e tutti gli schemi importati dalla classe XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the 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

Parametri

schemaToRemove
XmlSchema

Oggetto XmlSchema da rimuovere dalla classe XmlSchemaSet.The XmlSchema object to remove from the XmlSchemaSet.

Restituisce

Boolean

true se XmlSchema e tutte le relative importazioni sono stati rimossi; in caso contrario, restituisce false.true if the XmlSchema object and all its imports were successfully removed; otherwise, false.

Eccezioni

L'oggetto XmlSchema passato come parametro è null.The XmlSchema passed as a parameter is null.

Esempio

Nell'esempio di codice seguente viene illustrata l'aggiunta di più schemi a un oggetto XmlSchemaSet , quindi la rimozione di uno degli schemi e di tutti gli schemi importati utilizzando il RemoveRecursive metodo.The following code example illustrates adding multiple schemas to an XmlSchemaSet, then removing one of the schemas and all the schemas it imports using the RemoveRecursive method.

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

Commenti

Il RemoveRecursive metodo rimuove lo schema specificato e tutti gli schemi da esso importati da XmlSchemaSet , purché non esistano dipendenze dallo schema o dai relativi schemi importati.The RemoveRecursive method removes the specified schema and all the schemas it imports from the XmlSchemaSet, as long as there are no dependencies on the schema or its imported schemas. Se sono presenti dipendenze dallo schema o dai relativi schemi importati in XmlSchemaSet , non viene rimosso e viene RemoveRecursive restituito false .If there are dependencies on the schema or its imported schemas in the XmlSchemaSet, nothing is removed and RemoveRecursive returns false. Se false viene restituito e ValidationEventHandler viene definito un oggetto, viene inviato un avviso al gestore eventi che descrive le dipendenze.If false is returned and a ValidationEventHandler is defined, a warning is sent to the event handler describing the dependencies.

Se lo schema specificato importa altri schemi e lo schema specificato è stato precedentemente rimosso con il Remove metodo, il RemoveRecursive metodo non rimuoverà gli schemi importati e restituirà false .If the specified schema imports other schemas and the specified schema was previously removed with the Remove method, the RemoveRecursive method will not remove the imported schemas and will return false. Se, ad esempio, parentSchema le importazioni childSchema1 e childSchema2 il codice seguente elimineranno solo parentSchema , ma non gli schemi importati childSchema1 e childSchema2 :For example, if parentSchema imports childSchema1 and childSchema2 the following code will only remove parentSchema, but not the imported childSchema1 and childSchema2 schemas:

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

Con il codice seguente vengono rimossi gli parentSchema schemi importati e:The following code will remove the parentSchema and the imported schemas:

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

Il RemoveRecursive metodo non ha alcun effetto sullo stato della IsCompiled Proprietà.The RemoveRecursive method has no effect on the state of the IsCompiled property.

Si applica a