Udostępnij za pośrednictwem


XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda

Definicja

Usuwa określony schemat języka definicji schematu XML (XSD) i wszystkie schematy importowane z klasy 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

Obiekt XmlSchema do usunięcia z obiektu XmlSchemaSet.

Zwraca

true XmlSchema jeśli obiekt i wszystkie jego importy zostały pomyślnie usunięte; w przeciwnym razie false.

Wyjątki

Przekazany XmlSchema jako parametr to null.

Przykłady

Poniższy przykład kodu ilustruje dodanie wielu schematów do XmlSchemaSetelementu , a następnie usunięcie jednego ze schematów i wszystkich importowanych schematów przy użyciu 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);
    }
}

Uwagi

Metoda RemoveRecursive usuwa określony schemat i wszystkie importowane schematy z XmlSchemaSetelementu , o ile nie ma żadnych zależności od schematu ani importowanych schematów. Jeśli istnieją zależności od schematu lub jego zaimportowanych schematów w elemencie XmlSchemaSet, nic nie zostanie usunięte i RemoveRecursive zwróci wartość false. Jeśli false zostanie zwrócona wartość i ValidationEventHandler zostanie zdefiniowane, do programu obsługi zdarzeń zostanie wysłane ostrzeżenie opisujące zależności.

Jeśli określony schemat importuje inne schematy i określony schemat został wcześniej usunięty z Remove metody, RemoveRecursive metoda nie usunie zaimportowanych schematów i zwróci falsepolecenie . Jeśli na przykład parentSchema importuje childSchema1 i childSchema2 następujący kod usunie parentSchematylko element , ale nie importowane childSchema1 i childSchema2 schematy:

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

Poniższy kod spowoduje usunięcie parentSchema schematów i zaimportowanych:

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 nie ma wpływu na stan IsCompiled właściwości.

Dotyczy