XmlSchemaSet.RemoveRecursive(XmlSchema) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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 false
polecenie . Jeśli na przykład parentSchema
importuje childSchema1
i childSchema2
następujący kod usunie parentSchema
tylko 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.