XML Schema Definition , XSD , är den mest accepterade standard för att definiera strukturen för XML-dokument . Scheman kan definiera begränsningar , frivilliga och obligatoriska attribut i ett XML-dokument . . Net möjliggör validering av XML med hjälp av ett eller flera scheman innan behandlingen av innehållet . Validera XML minskar hanteringen beloppet undantaget som måste utföras i koden och fångar fel i uppgifterna formatering som annars riskerar att förbises . Saker du behöver: Review, Visual Studio 2008 eller över
Intermediate nivå kunskap . Net programmering
Visa fler instruktioner
XML validering med XmlReaderSettings
1
Skapa ett nya C # projekt av önskad typ i Visual Studio . Om du vill lägga till XML- validering till ett befintligt projekt , kan du hoppa över det här steget .
2
Öppna " Add New Item " dialogrutan genom att klicka på " Project " och sedan klicka på " Lägg till klass . " Addera 3
Ange ett namn för den nya klassen som följer dina kodningsstandarder och namngivning praxis .
4
Högerklicka på projektet i Solution Explorer till visa menyn Projekt .
5
Välj " Add Reference " från menyn för att visa " Add Reference " dialogrutan .
6
Välj System.Xml från listan av komponenter och klicka sedan på "Välj " -knappen . Klicka sedan på " OK . "
7
Lägg en metod till den nya klassen med följande kod :
private bool ValidateDocument ( sträng xmlFile , string xsdFile ) katalog
{
XmlReaderSettings inställningar = ny XmlReaderSettings { ValidationType
= läsare = XmlReader.Create ( xmlFile , inställningar ) ,
prova
{
samtidigt ( reader.Read ( ) ) ;
return true ;
}
fångst ( XmlSchemaValidationException ex ) katalog
{
//anger en validering uppstod
return false ; .
}
}
Denna kod läser XML till en XmlReader och ett XML- schema till en XMLSchemaSet . Alla attribut och element i XML- dokumentet valideras när dokumentet läses , det finns ingen anledning att besöka element individuellt . Om XML- dokumentet är inte giltig en XmlSchemaValidationException kastas . Undantaget omfattar ett felmeddelande , radnummer och positionen där felet uppstod . . Behandling stannar på mötte första felet
p Om du vill bearbeta hela dokumentet och se alla fel , inte bara det första felet , kan du lägga ett felhanterare för ValidationEventHandler händelsen med följande kod :
settings.ValidationEventHandler + = ValidationHandler ;
void ValidationHandler ( objekt avsändare , ValidationEventArgs e ) katalog
{
//process händelse här
} Addera XML validering med LINQ
8
Skapa en ny C # projekt av önskad typ i Visual Studio . Om du vill lägga till XML- validering till ett befintligt projekt , kan du hoppa över det här steget .
9
Öppna " Add New Item " dialogrutan genom att klicka på " Project " och sedan klicka på " Lägg till klass . "
10
Ange ett namn för den nya klassen som följer dina kodningsstandarder och namngivning praxis .
11
Högerklicka på projektet i Solution Explorer för att visa projektet menyn .
12
Välj " Add Reference " från menyn för att visa " Add Reference " dialogrutan .
13
Välj System.Xml och System.Linq från lista över komponenter och klicka sedan på "Välj " -knappen . Klicka sedan på " OK . "
14
Lägg en metod till den nya klassen med följande kod :
private bool ValidateDocument ( sträng xmlFile , string xsdFile ) katalog
{
//Skapa XML-dokument för att validera mot
XDocument xDoc = XDocument.Load ( xmlFile , LoadOptions.PreserveWhitespace ) .
XmlSchemaSet schema = ny XmlSchemaSet ( ) ;
bool ÄRFEL = ny bool ( ) , //Standard är false
int countError = 1 , . . //Räknar antalet fel har genererat
//Lägg schemat fil du vill validera mot
schema.Add ( null , xsdFile ) . !
//Ring validera och använda en LAMBDA uttryck som utökad metod
//Har inte du älskar . NET 3.5 och LINQ ...
xDoc.Validate ( schema , ( avsändare , e ) = >
{ switch ( e.Severity )
{ case XmlSeverityType.Error :
break;
case XmlSeverityType.Warning :
break;
}
countError + + ;
ÄRFEL = true; //Om fel bränder , flagga det att hantera när samtalet är klart
}
, true ) ; . //sant berättar validera ring för att befolka efter schema - validering
//som du behöver senare , om du vill dyka en ingen djupare ...
avkastning ÄRFEL ;
}
Denna kod läser XML till en XDocument och ett XML- schema till en XMLSchemaSet . Det anropar sedan Validate metoden på XDocument med en lambda uttryck som ValidationEventHandler .