Condividi tramite


XmlSchemaSet.RemoveRecursive(XmlSchema) Metodo

Definizione

Rimuove lo schema XSD (XML Schema Definition Language) specificato e tutti gli schemi importati dalla classe 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.

Restituisce

true se XmlSchema e tutte le relative importazioni sono stati rimossi; in caso contrario, restituisce false.

Eccezioni

L'oggetto XmlSchema passato come parametro è null.

Esempio

Nell'esempio di codice seguente viene illustrato l'aggiunta di più schemi a un XmlSchemaSetoggetto , quindi la rimozione di uno degli schemi e tutti gli schemi importati usando il RemoveRecursive metodo .

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 importati da XmlSchemaSet, purché non siano presenti dipendenze sullo schema o sui relativi schemi importati. Se sono presenti dipendenze dello schema o dei relativi schemi importati in XmlSchemaSet, non viene rimosso e RemoveRecursive restituisce false. Se false viene restituito e viene definito un avviso, viene inviato un ValidationEventHandler avviso al gestore eventi che descrive le dipendenze.

Se lo schema specificato importa altri schemi e lo schema specificato è stato rimosso in precedenza con il Remove metodo, il RemoveRecursive metodo non rimuoverà gli schemi importati e restituirà false. Ad esempio, se parentSchema importa childSchema1 e childSchema2 il codice seguente rimuoverà parentSchemasolo , ma non gli schemi importati childSchema1 e 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();

Il codice seguente rimuoverà gli parentSchema schemi e gli schemi importati:

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à.

Si applica a