XmlSchemaSet.RemoveRecursive(XmlSchema) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 .