Поделиться через


XmlSchemaSet.RemoveRecursive(XmlSchema) Метод

Определение

Удаляет указанную схему языка определения схем XML (XSD) и все импортируемые ей схемы из 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.

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

Значение true, если объект XmlSchema и все импортируемые им объекты были успешно удалены; в противном случае — значение false.

Исключения

XmlSchema, передаваемый в качестве параметра, равен null.

Примеры

В следующем примере кода показано добавление нескольких схем в XmlSchemaSet, а затем удаление одной из схем и всех схем, импортируемых с помощью RemoveRecursive метода .

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, если нет зависимостей от схемы или ее импортированных схем. Если есть зависимости от схемы или ее импортированных схем в XmlSchemaSet, ничего не удаляется и RemoveRecursive возвращает .false Если false возвращается и ValidationEventHandler определен , обработчику событий отправляется предупреждение, описывающее зависимости.

Если указанная схема импортирует другие схемы и указанная схема была ранее удалена с Remove помощью метода , RemoveRecursive метод не удалит импортированные схемы и вернет false. Например, если parentSchema импортирует childSchema1 и childSchema2 следующий код удаляет только parentSchema, но не импортированные childSchema1 схемы и childSchema2 :

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 и импортированные схемы:

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 свойства .

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