Xsd in Net veranschaulicht

August 1

XML-Schemadefinition, XSD, ist der am meisten akzeptierte Standard für die Definition der Struktur von XML-Dokumenten. Schemata können Beschränkungen, optionale und erforderliche Attribute in einem XML‑Dokument definieren. NET ermöglicht XML-Überprüfung Verwendung mindestens ein vor der Verarbeitung der Inhalts. Validieren von XML reduziert die Menge Ausnahmebehandlung, die im Code ausgeführt werden muss und fängt Fehler in der Datenformatierung, die ansonsten übersehen werden könnte.

Anweisungen

XML-Validierung mit XmlReaderSettings

1 Erstellen Sie ein neues C#-Projekt des gewünschten Typs in Visual Studio. Wenn Sie XML-Validierung in ein vorhandenes Projekt hinzufügen möchten, können Sie diesen Schritt überspringen.

2 Das Dialogfeld "Neues Element hinzufügen" zu öffnen, indem Sie "Projekt" klicken und dann auf "Klasse hinzufügen".

3 Geben Sie einen Namen für die neue Klasse, die hält sich an Ihre Kodierungsstandards und Praktiken zu benennen.

4 Mit der rechten Maustaste in des Projekts im Projektmappen-Explorer im Projektmenü angezeigt.

5 Wählen Sie "Verweis hinzufügen" aus dem Menü, um das Dialogfeld "Verweis hinzufügen" anzuzeigen.

6 Wählen Sie System.XML aus der Liste der Komponenten, und klicken Sie auf die Schaltfläche "Auswählen". Klicken Sie "OK".

7 Fügen Sie eine Methode in die neue Klasse mithilfe des folgenden Codes:

private Bool ValidateDocument (Zeichenfolge XmlFile, String XsdFile)

{

XmlReaderSettings settings = new XmlReaderSettings{ValidationType

= ValidationType.Schema};

settings.Schemas.Add(XmlSchema.Read(XmlReader.Create(xsdFile)));

XmlReader reader = XmlReader.Create(xmlFile, settings);

try

{

while(reader.Read());

return true;

}

catch (XmlSchemaValidationException ex)

{

// indicates a validation error occurred.

return false;

}

}

Dieser Code lädt XML in einem XmlReader und eines XML-Schemas in einem XMLSchemaSet. Alle Attribute und Elemente im XML-Dokument werden überprüft, wenn das Dokument gelesen wird; Es gibt keine Notwendigkeit, Elemente einzeln zu besuchen. Wenn das XML-Dokument nicht gültig ist, wird eine XmlSchemaValidationException ausgelöst. Die Ausnahme schließt eine Fehlermeldung, die Zeilennummer und die Position wo der Fehler aufgetreten ist. Verarbeitung beendet wird auf den ersten Fehler aufgetreten.

Möchten Sie das gesamte Dokument zu verarbeiten und sehen alle Fehler, nicht nur den ersten Fehler, können Sie einen Fehlerhandler für ValidationEventHandler-Ereignis mit dem folgenden Code hinzufügen:

Einstellungen. ValidationEventHandler += ValidationHandler;

static void ValidationHandler (Object Sender, ValidationEventArgs e)

{

Prozess-Event hier

}

XML-Validierung mithilfe von LINQ

8 Erstellen Sie ein neues C#-Projekt des gewünschten Typs in Visual Studio. Wenn Sie XML-Validierung in ein vorhandenes Projekt hinzufügen möchten, können Sie diesen Schritt überspringen.

9 Das Dialogfeld "Neues Element hinzufügen" zu öffnen, indem Sie "Projekt" klicken und dann auf "Klasse hinzufügen".

10 Geben Sie einen Namen für die neue Klasse, die hält sich an Ihre Kodierungsstandards und Praktiken zu benennen.

11 Mit der rechten Maustaste in des Projekts im Projektmappen-Explorer im Projektmenü angezeigt.

12 Wählen Sie "Verweis hinzufügen" aus dem Menü, um das Dialogfeld "Verweis hinzufügen" anzuzeigen.

13 Wählen Sie System.XML und System.Linq aus der Liste der Komponenten, und klicken Sie auf die Schaltfläche "Auswählen". Klicken Sie "OK".

14 Fügen Sie eine Methode in die neue Klasse mithilfe des folgenden Codes:

private Bool ValidateDocument (Zeichenfolge XmlFile, String XsdFile)

{

// Create the XML document to validate against.

XDocument xDoc = XDocument.Load(xmlFile, LoadOptions.PreserveWhitespace);

XmlSchemaSet schema = new XmlSchemaSet();

bool isError = new bool(); // Defaults to false.

int countError = 1; // Counts the number of errors have generated.

// Add the schema file you want to validate against.

schema.Add(null, xsdFile);

// Call validate and use a LAMBDA Expression as extended method!

// Don't you love .NET 3.5 and LINQ...

xDoc.Validate(schema, (sender, e) =>

{ switch (e.Severity)

{ case XmlSeverityType.Error:

break;

case XmlSeverityType.Warning:

break;

}

countError++;

isError = true; // If error fires, flag it to handle once call is complete.

}

, true); // True tells the validate call to populate the post-schema-validation

// which you will need later, if you want to dive a littel deeper...

return isError;

}

Dieser Code lädt XML in ein XDocument und eines XML-Schemas in einem XMLSchemaSet. Er fordert dann die Validate-Methode mit einem Lambda-Ausdruck als ValidationEventHandler XDocument.