XML Schema Definition , XSD , is de meest geaccepteerde standaard voor het definiëren van de structuur van XML-documenten . Schema's kunnen beperkingen , optioneel en benodigde attributen binnen een XML-document te definiëren . . Net kan validatie van XML via een of meer schema voor het verwerken van de inhoud . Valideren van XML vermindert de hoeveelheid exception handling die moeten worden uitgevoerd in code en vangt fouten in de gegevens opmaak die anders misschien over het hoofd gezien . Wat je nodig hebt Visual Studio 2008 of hoger Intermediate niveau kennis . Netto programmering Toon Meer Aanwijzingen XML-validatie Gebruik XmlReaderSettings 1 Creëer een nieuwe C # -project van het gewenste type in Visual Studio . Als u wilt XML- validatie toe te voegen aan een bestaand project , kunt u deze stap overslaan . Kopen van 2 Open het "Add New Item " dialoogvenster door te klikken op " Project " en vervolgens te klikken op " Add Class . " 3 Geef een naam voor de nieuwe klasse die voldoet aan uw codering normen en naamgeving praktijken . 4 rechtermuisknop op het project in de Solution Explorer om het menu weergeven project . 5 Selecteer " Add Reference " in het menu aan de " Add Reference " dialoogvenster weer te geven . 6 Selecteer System.Xml uit de lijst van onderdelen en klik vervolgens op de knop "Selecteren" . Klik vervolgens op " OK". 7 Voeg een methode om de nieuwe klasse met de volgende code : private bool ValidateDocument (string XMLbestand , touwtje xsdFile ) op Twitter { XmlReaderSettings instellingen = XmlReaderSettings nieuwe { ValidationType = lezer = XmlReader.Create ( XMLbestand , instellingen ) ; proberen { terwijl ( reader.Read ( ) ) ; return true; < br } catch > ( XmlSchemaValidationException ex ) op { //geeft een validatie fout opgetreden terugkeer false; . } } Deze code laadt XML in een XmlReader en een XML-schema in een XMLSchemaSet . Alle attributen en elementen in het XML-document worden gevalideerd wanneer het document wordt gelezen , er is geen noodzaak om elementen afzonderlijk bezoeken . Als het XML-document is niet geldig een XmlSchemaValidationException wordt gegooid . De uitzondering is inclusief een foutmelding , lijnnummer en de positie waar de fout is opgetreden . . Verwerking stopt bij de eerste fout opgetreden Als u het hele document te verwerken en alle fouten , niet alleen de eerste fout , kun je een fout handler voor ValidationEventHandler gebeurtenis toe te voegen met behulp van de volgende code : settings.ValidationEventHandler + = ValidationHandler ; static void ValidationHandler ( objecten afzender , ValidationEventArgs e ) op Twitter { //proces evenement hier } XML-validatie Met behulp van LINQ 8 Maak een nieuw C # -project van het gewenste type in Visual Studio . Als u wilt XML- validatie toe te voegen aan een bestaand project , kunt u deze stap overslaan . 9 Open het "Add New Item " dialoogvenster door te klikken op " Project " en vervolgens te klikken op " Add Class . " 10 Geef een naam voor de nieuwe klasse die voldoet aan uw codering normen en naamgeving praktijken . rechtermuisknop op het project 11 in de Solution Explorer om het project weer te geven menu . 12 Selecteer " Add Reference " in het menu aan de " Add Reference " dialoogvenster weer te geven . 13 Select System.Xml en System.Linq uit de lijst met onderdelen en klik vervolgens op de knop "Selecteren" . Klik vervolgens op " OK". 14 Voeg een methode om de nieuwe klasse met de volgende code : private bool ValidateDocument (string XMLbestand , touwtje xsdFile ) op Twitter { //Maak het XML-document te valideren tegen XDocument xDoc = XDocument.Load ( XMLbestand , LoadOptions.PreserveWhitespace ) ; . XmlSchemaSet schema = new XmlSchemaSet ( ) ; bool isError = new bool ( ) ; //Defaults om valse int countError = 1 ; . . //telt het aantal fouten hebben gegenereerd //In het schema dat u wilt valideren tegen schema.Add ( null , xsdFile ) ; . ! //Call valideren en gebruiken van een lambda-expressie zoals uitgebreide methode //hou je niet van . NET 3.5 en LINQ ... xDoc.Validate ( schema , ( afzender , e ) = > { switch ( e.Severity ) < br > {case XmlSeverityType.Error : break ; geval XmlSeverityType.Warning : break ; } countError + + ; isError = true; //Als de fout branden , markeren het te hanteren zodra oproep is voltooid } , true) ; . //True vertelt het valideren bellen om het post - schema- validatie bevolken //die je later nodig hebt , als je wilt duiken een littel dieper ... terugkeer isError ; } Deze code laadt XML in een XDocument en een XML-schema in een XMLSchemaSet . Het roept dan de Validate methode op XDocument behulp van een lambda-expressie als de ValidationEventHandler .
|