XmlSchemaSet.RemoveRecursive(XmlSchema) Метод

Определение

Удаляет указанную схему языка определения схем XML (XSD) и все импортируемые ей схемы из XmlSchemaSet.Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the 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

Параметры

schemaToRemove
XmlSchema

Объект XmlSchema, который необходимо удалить из коллекции XmlSchemaSet.The XmlSchema object to remove from the XmlSchemaSet.

Возвращаемое значение

Значение true, если объект XmlSchema и все импортируемые им объекты были успешно удалены; в противном случае — значение false.true if the XmlSchema object and all its imports were successfully removed; otherwise, false.

Исключения

XmlSchema, передаваемый в качестве параметра, равен null.The XmlSchema passed as a parameter is null.

Примеры

В следующем примере кода показано добавление нескольких схем в XmlSchemaSet, а также удаление одной из схем и всех импортируемых схем с помощью метода RemoveRecursive.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  
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);  
    }  
}  

Комментарии

Метод RemoveRecursive удаляет указанную схему и все импортируемые схемы из XmlSchemaSet, если нет зависимостей от схемы или ее импортированных схем.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. При наличии зависимостей от схемы или ее импортированных схем в XmlSchemaSetничего не удаляется и RemoveRecursive возвращает false.If there are dependencies on the schema or its imported schemas in the XmlSchemaSet, nothing is removed and RemoveRecursive returns false. Если возвращается false и определен ValidationEventHandler, в обработчик событий, описывающий зависимости, отправляется предупреждение.If false is returned and a ValidationEventHandler is defined, a warning is sent to the event handler describing the dependencies.

Если указанная схема импортирует другие схемы, а указанная схема была ранее удалена с помощью метода Remove, то RemoveRecursive метод не удалит импортированные схемы и вернет false.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. Например, если parentSchema импортирует childSchema1 и childSchema2 следующий код удалит только parentSchema, но не импортированные childSchema1 и childSchema2 схемы: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();  

Следующий код удалит parentSchema и импортированные схемы: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();  

Метод RemoveRecursive не влияет на состояние свойства IsCompiled.The RemoveRecursive method has no effect on the state of the IsCompiled property.

Применяется к