Partilhar via


XmlSchemaSet.RemoveRecursive(XmlSchema) Método

Definição

Remove o esquema XSD (linguagem de definição de esquema XML) especificado e todos os esquemas importados 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 ser removido do XmlSchemaSet.

Retornos

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

Exceções

O XmlSchema parâmetro passado como um é 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 por XmlSchemaSetele, desde que não haja dependências no esquema ou em seus esquemas importados. Se houver dependências no esquema ou nos esquemas importados, XmlSchemaSetnada será removido e RemoveRecursive retornará false. Se false for retornado e um ValidationEventHandler for definido, um aviso será enviado ao 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 as importações e childSchema2 o código a seguir forem removidos childSchema1parentSchemaapenas, 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á os parentSchema esquemas importados e os seguintes:

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