Sdílet prostřednictvím


XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda

Definice

Odebere zadané schéma XSD (XML Schema Definition Language) a všechna schémata, která importuje z objektu 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

Parametry

schemaToRemove
XmlSchema

Objekt XmlSchema , který chcete odebrat z objektu XmlSchemaSet.

Návraty

true pokud byl XmlSchema objekt a všechny jeho importy úspěšně odebrány; v opačném případě false.

Výjimky

Předaný XmlSchema jako parametr je null.

Příklady

Následující příklad kódu ilustruje přidání více schémat do objektu XmlSchemaSet, pak odebrání jednoho ze schémat a všech schémat, která importuje pomocí RemoveRecursive metody.

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);
    }
}

Poznámky

Metoda RemoveRecursive odebere zadané schéma a všechna schémata, která importuje z objektu XmlSchemaSet, pokud neexistují žádné závislosti na schématu nebo jeho importovaných schématech. Pokud existují závislosti na schématu nebo jeho importovaných schématech v objektu XmlSchemaSet, nic se neodebere a RemoveRecursive vrátí false. Pokud false je vrácena a ValidationEventHandler je definována, odešle se do obslužné rutiny události upozornění popisující závislosti.

Pokud zadané schéma importuje další schémata a zadané schéma bylo dříve odebráno metodou Remove , RemoveRecursive metoda neodebere importované schémata a vrátí false. Pokud se například parentSchema importy childSchema1 a childSchema2 následující kód odeberou parentSchema, ale ne importované childSchema1 a childSchema2 schémata:

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();

Následující kód odebere parentSchema importovaná schémata:

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

Metoda RemoveRecursive nemá žádný vliv na stav IsCompiled vlastnosti.

Platí pro