Comparteix a través de


XmlSchemaSet.RemoveRecursive(XmlSchema) Método

Definición

Quita el esquema del lenguaje de definición de esquemas XML (XSD) especificado y todos los esquemas que importa de 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

Objeto XmlSchema que se va a quitar de XmlSchemaSet.

Devoluciones

true si el objeto XmlSchema y todas sus importaciones se han eliminado correctamente; de lo contrario, devuelve false.

Excepciones

El objeto XmlSchema que se pasa como parámetro es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo agregar varios esquemas a un XmlSchemaSety, a continuación, quitar uno de los esquemas y todos los esquemas que importa mediante el 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);
    }
}

Comentarios

El RemoveRecursive método quita el esquema especificado y todos los esquemas que importa de XmlSchemaSet, siempre y cuando no haya dependencias en el esquema o en sus esquemas importados. Si hay dependencias en el esquema o sus esquemas importados en XmlSchemaSet, no se quita nada y RemoveRecursive devuelve false. Si false se devuelve y se define , ValidationEventHandler se envía una advertencia al controlador de eventos que describe las dependencias.

Si el esquema especificado importa otros esquemas y el esquema especificado se quitó anteriormente con el Remove método , el RemoveRecursive método no quitará los esquemas importados y devolverá false. Por ejemplo, si parentSchema importa childSchema1 y childSchema2 el código siguiente solo quitará parentSchema, pero no los esquemas y 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();

El código siguiente quitará los parentSchema esquemas importados y :

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

El RemoveRecursive método no tiene ningún efecto en el estado de la IsCompiled propiedad .

Se aplica a