C#-XML-Validierung anhand des referenzierten XSD-Schemas
Die Sicherstellung der Gültigkeit eines XML-Dokuments anhand eines definierten Schemas ist von entscheidender Bedeutung. Dieser Artikel demonstriert die C#-XML-Validierung mit der Klasse XmlDocument
anhand eines XSD-Schemas.
Im Gegensatz zum Standardverhalten führt XmlDocument
keine automatische Validierung anhand der im XML eingebetteten Schemata durch. Um dies zu ermöglichen, konfigurieren wir XmlReaderSettings
. Konkret setzen wir ValidationType
auf Schema
und verwenden ValidationFlags
, um Inline-Schemata, Schema-Speicherorte und Berichtswarnungen zu verarbeiten.
<code class="language-csharp">XmlReaderSettings settings = new XmlReaderSettings(); settings.ValidationType = ValidationType.Schema; settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessInlineSchema; settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation; settings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;</code>
Als nächstes erstellen Sie ein XmlReader
mit diesen Einstellungen und registrieren ein ValidationEventHandler
, um Validierungsergebnisse zu erfassen.
<code class="language-csharp">XmlReader reader = XmlReader.Create("inlineSchema.xml", settings); reader.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);</code>
Die ValidationCallBack
-Methode verarbeitet Validierungsereignisse:
<code class="language-csharp">private static void ValidationCallBack(object sender, ValidationEventArgs args) { if (args.Severity == XmlSeverityType.Warning) Console.WriteLine("\tWarning: " + args.Message); else Console.WriteLine("\tValidation error: " + args.Message); }</code>
Diese optimierte Methode validiert das XML automatisch anhand des eingebetteten Schemas, sodass kein manuelles Laden des Schemas in das XmlDocument
-Objekt erforderlich ist. Die ValidationCallBack
-Funktion liefert klare Warnungen und Fehlermeldungen.
Das obige ist der detaillierte Inhalt vonWie validiere ich XML anhand eines referenzierten XSD-Schemas in C#?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!