XmlSchemaSet.RemoveRecursive(XmlSchema) メソッド

定義

指定された XML スキーマ定義言語 (XSD) スキーマとそれがインポートしたすべてのスキーマを XmlSchemaSet から削除します。Removes the specified XML Schema definition language (XSD) schema and all the schemas it imports from the 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 オブジェクト。The XmlSchema object to remove from the XmlSchemaSet.

戻り値

XmlSchema オブジェクトとそれがインポートしたすべてのスキーマが正常に削除された場合は true。それ以外の場合は falsetrue if the XmlSchema object and all its imports were successfully removed; otherwise, false.

例外

パラメーターとして渡された XmlSchema オブジェクトが null です。The XmlSchema passed as a parameter is null.

次のコード例では、にXmlSchemaSet複数のスキーマを追加し、そのスキーマと、 RemoveRecursiveメソッドを使用してインポートするすべてのスキーマを削除しています。The following code example illustrates adding multiple schemas to an XmlSchemaSet, then removing one of the schemas and all the schemas it imports using the RemoveRecursive method.

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がない限り、指定したスキーマとそれによってインポートされるすべてのスキーマをから削除します。The RemoveRecursive method removes the specified schema and all the schemas it imports from the XmlSchemaSet, as long as there are no dependencies on the schema or its imported schemas. XmlSchemaSetスキーマまたはインポートされたスキーマに依存関係がある場合は、何RemoveRecursivefalse削除されず、が返されます。If there are dependencies on the schema or its imported schemas in the XmlSchemaSet, nothing is removed and RemoveRecursive returns false. false 返さValidationEventHandlerれ、が定義されている場合は、依存関係を記述するイベントハンドラーに警告が送信されます。If false is returned and a ValidationEventHandler is defined, a warning is sent to the event handler describing the dependencies.

指定したスキーマが他のスキーマをインポートし、指定したスキーマRemoveがメソッドでRemoveRecursive以前に削除された場合、メソッドはfalseインポートされたスキーマを削除せず、を返します。If the specified schema imports other schemas and the specified schema was previously removed with the Remove method, the RemoveRecursive method will not remove the imported schemas and will return false. たとえばparentSchemachildSchema2インポートchildSchema1 parentSchemachildSchema2次のコードでは、が削除されるだけで、 childSchema1インポートおよびスキーマは削除されません。For example, if parentSchema imports childSchema1 and childSchema2 the following code will only remove parentSchema, but not the imported childSchema1 and childSchema2 schemas:

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およびインポートされたスキーマを削除します。The following code will remove the parentSchema and the imported schemas:

XmlSchemaSet ss = new XmlSchemaSet();  
XmlSchema xs = XmlSchema.Read(XmlReader.Create("parentSchema.xsd"), null);  
ss.Add(xs);  
ss.Compile();  
ss.RemoveRecursive(xs);  
ss.Compile();  

メソッドは、 IsCompiledプロパティの状態には影響しません。 RemoveRecursiveThe RemoveRecursive method has no effect on the state of the IsCompiled property.

適用対象