XML-Validierung: Wozu? / XML-Schema: Datenvalidierung mit C#.NET
![]() |
![]() |
➪ Die XML-Schema-Datenvalidierung eines XML-Dokuments kann mit leistungsfähigen Klassen in VisualBasic.NET durchgeführt werden.
Für einen einfachen Einstieg soll die folgende Logik dienen, die die genannten Namespaces System.Xml bzw. System.Xml.Schema einbezieht, und die durch den Kommandoaufruf mit den entsprechenden Parametern gestartet werden kann:
Der folgende Aufruf würde den Wert "Hugo" ergeben.
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.OleDb;
using System.Xml.Serialization;
using System.Xml;
using System.Xml.Schema;
using System.IO;
namespace cscons_ADO_SchemaFromDB
{
class Program
{
/// <summary>
/// Validiert ein XML-Dokument aufgrund eines XML-Schemas
/// </summary>
static void ReadSchema()
{
//Liest das Schema aus einem Dokument
string xsdfile = @"Orte_Elemente.xsd";
string xmlfile = @"Orte_Elemente.xml";
XmlTextReader reader = new XmlTextReader(xsdfile);
XmlSchema myschema = XmlSchema.Read(reader, ValidationCallback);
// Schema-Ausgabe auf Console
myschema.Write(Console.Out);
// Reader-Konfiguration mit ReaderSettings
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add(myschema);
settings.ValidationType = ValidationType.Schema;
// Setze ValidationHandler
settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);
XmlReader xreader = XmlReader.Create(xmlfile, settings);
Console.WriteLine("\n\nStart Reader");
while (xreader.Read()) {}
reader.Close();
Console.WriteLine("End Reader");
}
static void ValidationCallback(object sender, ValidationEventArgs args)
{
if (args.Severity == XmlSeverityType.Warning)
Console.Write("WARNING: ");
else if (args.Severity == XmlSeverityType.Error)
Console.Write("ERROR: ");
else Console.WriteLine("Heeeee");
Console.WriteLine(args.Message);
}
/// <param name="args"></param>
static void Main(string[] args)
{
ReadSchema();
Console.ReadLine();
}
}
}
wg / 20. Dezember 2018
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de