XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda

Definicja

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

Parametry

schemaToRemove
XmlSchema

Obiekt XmlSchema, który ma zostać usunięty z XmlSchemaSet.The XmlSchema object to remove from the XmlSchemaSet.

Zwraca

true, czy obiekt XmlSchema i wszystkie jego Importy zostały pomyślnie usunięte; w przeciwnym razie false.true if the XmlSchema object and all its imports were successfully removed; otherwise, false.

Wyjątki

XmlSchema przekazywać jako parametr jest null.The XmlSchema passed as a parameter is null.

Przykłady

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

Uwagi

Metoda RemoveRecursive usuwa określony schemat i wszystkie schematy importowane z XmlSchemaSet, o ile nie ma żadnych zależności w schemacie lub jego importowanych schematach.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. Jeśli schemat lub jego zaimportowane schematy w XmlSchemaSetsą zależnościami, nic nie zostanie usunięte i RemoveRecursive zwróci false.If there are dependencies on the schema or its imported schemas in the XmlSchemaSet, nothing is removed and RemoveRecursive returns false. Jeśli false jest zwracana i zdefiniowana jest ValidationEventHandler, do procedury obsługi zdarzeń opisującej zależności zostanie wysłane ostrzeżenie.If false is returned and a ValidationEventHandler is defined, a warning is sent to the event handler describing the dependencies.

Jeśli określony schemat importuje inne schematy, a określony schemat został wcześniej usunięty przy użyciu metody Remove, Metoda RemoveRecursive nie spowoduje usunięcia zaimportowanych schematów i zwróci 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. Na przykład jeśli parentSchema importuje childSchema1 i childSchema2 następujący kod spowoduje usunięcie tylko parentSchema, ale nie zaimportowanych schematów childSchema1 i childSchema2: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();  

Poniższy kod spowoduje usunięcie parentSchema i importowanych schematów: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();  

Metoda RemoveRecursive nie ma wpływu na stan właściwości IsCompiled.The RemoveRecursive method has no effect on the state of the IsCompiled property.

Dotyczy