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