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 オブジェクト。

戻り値

XmlSchema オブジェクトとそれがインポートしたすべてのスキーマが正常に削除された場合は true。それ以外の場合は false

例外

パラメーターとして渡された XmlSchema オブジェクトが null です。

次のコード例は、 に複数のスキーマを XmlSchemaSet追加し、 メソッドを使用してスキーマの 1 つとインポートするすべてのスキーマを削除する方法を 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。 が返され、 ValidationEventHandler が定義されている場合falseは、依存関係を説明する警告がイベント ハンドラーに送信されます。

指定したスキーマが他のスキーマをインポートし、指定したスキーマが メソッドで Remove 以前に削除された場合、 RemoveRecursive メソッドはインポートされたスキーマを削除せず、 を返 falseします。 たとえば、parentSchemaインポートchildSchema1childSchema2次のコードでは、 のみが削除されますが、インポートされた childSchema1 スキーマとchildSchema2スキーマは削除parentSchemaされません。

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 影響しません。

適用対象