XmlSchemaSet.RemoveRecursive(XmlSchema) 方法

定义

XmlSchemaSet 中移除指定的 XML 架构定义语言 (XSD) 架构和它导入的所有架构。

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 对象。

返回

如果已成功移除 XmlSchema 对象和其导入的所有内容,则为 true;否则为 false

例外

作为参数传递的 XmlSchemanull

示例

下面的代码示例演示如何将RemoveRecursive多个架构添加到 XmlSchemaSet,然后使用 方法删除其中一个架构及其导入的所有架构。

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 import 和childSchema2childSchema1以下代码将仅删除 ,而不会删除parentSchema导入的 childSchema1childSchema2 架构:

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 没有影响。

适用于