Práce s XML v C# (5.) - ověřování dokumentu pomocí třídy XmlValidatingReader v rubrice DOTNET
V dnešním závěrečném dílu seriálu se naučíme ověřovat správnost XML dokumentů.
Třída XmlValidatingReader je odvozena od třídy XmlTextReader. Přidává schopnost ověřovat dokumenty XML během jejich čtení, podporuje schémata DTD, XSD a XDR. Třída nepřijímá jako vstup ani název souboru, ani url, je však možno názvem souboru (url adresou) inicializovat objekt XmlTextReader a obalit kolem něj instanci třídy XmlValidatingReader. Platnost XML dokumentu ověříme postupným procházením všech uzlů. Jestliže XML neodpovídá zadanému schématu, spustí se událost ValidationEventHandler.
Nejdůležitější vlastnosti třídy XmlValidatingReader:
Schemas – schéma (schémata), kterým je dokument ověřován,
ValidationType – typ schématu, výchozí hodnota je Auto, což dovoluje určit typ z dokumentu.
Příklad: Načtěte soubor hraciSchema.xml a ověřte ho podle schématu hraciSchema.xsd
Inicializace objektu XmlValidatingReader:
XmlTextReader textReader = new XmlTextReader(sXmlNazevSouboru);
textReader.WhitespaceHandling = WhitespaceHandling.None;
XmlValidatingReader validatingReader =
new XmlValidatingReader(textReader);
validatingReader.Schemas.Add(sJmennyProstor, sNazevSouboruSchematu);
Validace souboru:
// Nastavení validačního handleru
validatingReader.ValidationEventHandler +=
new ValidationEventHandler(chybaValidace);
// Čtení xmlDat
bool bRadek;
this.bJeValidni = true;
while (bRadek = this.xml.Read())
{
// jednotlivé řádky XML se při čtení automaticky validují, žádný další
// kód není třeba
}
if (this.bJeValidni)
Console.WriteLine("XML je validní");
else
Console.WriteLine("XML není validní");
//Zavření readeru
validatingReader.Close();
Validační handler:
private void chybaValidace (object sender, ValidationEventArgs args)
{
Console.WriteLine("\r\n\tChyba validace: " + args.Message);
this.bJeValidni = false;
}
Kompletní zdrojové texty příkladu je možno stáhnout zde.
Autor: Anna Rývová
e-mail: anna.ryvova@volny.cz
web:
|
Poslední ze stejné rubriky
|
|