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