XmlSchemaSet.RemoveRecursive(XmlSchema) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.