XmlSchemaSet.RemoveRecursive(XmlSchema) Método

Definição

Remove o esquema de linguagem de definição de esquema XML (XSD) especificado e todas as importações de esquema do 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

Parâmetros

schemaToRemove
XmlSchema

O objeto XmlSchema a ser removido do XmlSchemaSet.

Retornos

true se o objeto XmlSchema e todas as suas importações foram removidos com êxito; caso contrário, false.

Exceções

O XmlSchema passado como um parâmetro é null.

Exemplos

O exemplo de código a seguir ilustra a adição de vários esquemas a um XmlSchemaSet, removendo um dos esquemas e todos os esquemas importados usando o RemoveRecursive método .

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

Comentários

O RemoveRecursive método remove o esquema especificado e todos os esquemas importados do XmlSchemaSet, desde que não haja dependências no esquema ou em seus esquemas importados. Se houver dependências no esquema ou em seus esquemas importados no XmlSchemaSet, nada será removido e RemoveRecursive retornará false. Se false for retornado e um ValidationEventHandler for definido, um aviso será enviado para o manipulador de eventos que descreve as dependências.

Se o esquema especificado importar outros esquemas e o esquema especificado tiver sido removido anteriormente com o Remove método , o RemoveRecursive método não removerá os esquemas importados e retornará false. Por exemplo, se parentSchema importações childSchema1 e childSchema2 o seguinte código removerão parentSchemaapenas , mas não os esquemas e childSchema2 importadoschildSchema1:

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

O código a seguir removerá o parentSchema e os esquemas importados:

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

O RemoveRecursive método não tem efeito sobre o estado da IsCompiled propriedade.

Aplica-se a