XmlSchemaSet.RemoveRecursive(XmlSchema) Método

Definição

Remove o esquema da linguagem de definição de esquemas XML (XSD) especificado e todos os esquemas que importa 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 XmlSchema objeto a remover do XmlSchemaSet.

Devoluções

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

Exceções

O XmlSchema passado como parâmetro é null.

Exemplos

O exemplo de código seguinte ilustra a adição de múltiplos esquemas a um XmlSchemaSet, e depois a remoção de um dos esquemas e todos os esquemas que importa 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);
    }
}

Observações

O RemoveRecursive método remove o esquema especificado e todos os esquemas que importa do XmlSchemaSet, desde que não existam dependências do esquema ou dos seus esquemas importados. Se existirem dependências do esquema ou dos seus esquemas importados no XmlSchemaSet, nada é removido e RemoveRecursive retorna false. Se false for devolvido e a ValidationEventHandler for definido, é enviado um aviso ao gestor de eventos descrevendo as dependências.

Se o esquema especificado importar outros esquemas e o esquema especificado tiver sido previamente removido com o Remove método, o RemoveRecursive método não removerá os esquemas importados e devolverá false. Por exemplo, se parentSchema os imports childSchema1 e childSchema2 o código seguinte apenas removem parentSchema, 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 seguinte código irá remover os parentSchema esquemas e 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 qualquer efeito no estado da IsCompiled propriedade.

Aplica-se a