XmlSchemaSet.RemoveRecursive Method
Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the XmlSchemaSet.
Namespace: System.Xml.Schema
Assembly: System.Xml (in System.Xml.dll)
'Declaration Public Function RemoveRecursive ( _ schemaToRemove As XmlSchema _ ) As Boolean
Parameters
- schemaToRemove
- Type: System.Xml.Schema.XmlSchema
The XmlSchema object to remove from the XmlSchemaSet.
Return Value
Type: System.Booleantrue if the XmlSchema object and all its imports were successfully removed; otherwise, false.
| Exception | Condition |
|---|---|
| ArgumentNullException | The XmlSchema passed as a parameter is Nothing. |
The RemoveRecursive method removes the specified schema and all the schemas it imports from the XmlSchemaSet, as long as there are no dependencies on the schema or its imported schemas. If there are dependencies on the schema or its imported schemas in the XmlSchemaSet, nothing is removed and RemoveRecursive returns false. If false is returned and a ValidationEventHandler is defined, a warning is sent to the event handler describing the dependencies.
If the specified schema imports other schemas and the specified schema was previously removed with the Remove method, the RemoveRecursive method will not remove the imported schemas and will return false. For example, if parentSchema imports childSchema1 and childSchema2 the following code will only remove parentSchema, but not the imported childSchema1 and childSchema2 schemas:
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();
The following code will remove the parentSchema and the imported schemas:
XmlSchemaSet ss = new XmlSchemaSet();
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);
ss.Add(xs);
ss.Compile();
ss.RemoveRecursive(xs);
ss.Compile();
The RemoveRecursive method has no effect on the state of the IsCompiled property.
The following code example illustrates adding multiple schemas to an XmlSchemaSet, then removing one of the schemas and all the schemas it imports using the RemoveRecursive method.
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
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.