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


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.

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

Значение />, если объект и все его импорты успешно удалены; в противном случае .

Исключения

Передается XmlSchemanullв качестве параметра.

Примеры

В следующем примере кода показано добавление нескольких схем в объект 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 свойства.

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