XmlSchemaSet.RemoveRecursive(XmlSchema) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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.