XmlSchemaSet.RemoveRecursive(XmlSchema) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 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
。
例外
作为参数传递的 XmlSchema 为 null
。
示例
下面的代码示例演示如何将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 和childSchema2
childSchema1
以下代码将仅删除 ,而不会删除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 没有影响。