definizione dello schema XML, XSD , è lo standard più diffuso per definire la struttura di documenti XML . Gli schemi possono definire limitazioni , opzionali e gli attributi richiesti all'interno di un documento XML . . Net consente di validazione XML utilizzando uno o più schemi prima di elaborare il contenuto . Convalida XML riduce la gestione delle eccezioni importo che deve essere esercitata nel codice e rileva gli errori nella formattazione dei dati che potrebbero altrimenti passare inosservati . Cose che ti serviranno
Visual Studio 2008 o superiore
conoscenza di livello intermedio . Programmazione Net
Mostra più istruzioni
Convalida XML Utilizzando XmlReaderSettings
1
Creare un nuovo progetto C # del tipo desiderato in Visual Studio . Se si desidera aggiungere la convalida XML a un progetto esistente , è possibile saltare questo passaggio .
2 Aprire la finestra di dialogo " Aggiungi nuovo elemento ", facendo clic su " Progetto" e quindi facendo clic su " Aggiungi classe . "
3 Specificare un nome per la nuova classe che aderisce ai vostri standard di codifica e la denominazione pratiche .
4
destro del mouse sul progetto in Esplora soluzioni per visualizzare il menu del progetto .
5
Selezionare " Aggiungi riferimento " dal menu per visualizzare la finestra di dialogo " Aggiungi riferimento " .
6
Seleziona System.XML dalla lista di componenti e quindi fare clic sul pulsante "Seleziona" . Quindi , fare clic su "OK".
7
Aggiungere un metodo per la nuova classe utilizzando il seguente codice :
private bool ValidateDocument ( stringa xmlFile , stringa xsdFile ) per < p > {
impostazioni XmlReaderSettings
= new XmlReaderSettings { ValidationType
= reader = XmlReader.Create ( xmlFile , impostazioni ) ;
provare
{
mentre ( reader.Read ());
return true ;
}
cattura
( XmlSchemaValidationException ex ) per
{
//indica un errore di convalida si è verificato
return false ;
.
}
}
Questo codice carica XML in un XmlReader e uno schema XML in un XmlSchemaSet . Tutti gli attributi e gli elementi nel documento XML vengono convalidati quando il documento viene letto , non c'è bisogno di visitare gli elementi singolarmente . Se il documento XML non è valido viene generata XmlSchemaValidationException . L'eccezione include un messaggio di errore , il numero di riga e la posizione in cui si è verificato l' errore . . Elaborazione si ferma al primo errore incontrato
Se si desidera elaborare l'intero documento e vedere tutti gli errori , non solo il primo errore , è possibile aggiungere un gestore di errori per l'evento ValidationEventHandler utilizzando il seguente codice :
settings.ValidationEventHandler + = ValidationHandler ;
static void ValidationHandler ( object sender , ValidationEventArgs e)
{
/evento /processo qui
}
convalida XML con LINQ
8
Creare un nuovo progetto C del tipo desiderato in Visual Studio . Se si desidera aggiungere la convalida XML a un progetto esistente , è possibile saltare questo passaggio .
9
Aprire la finestra di dialogo " Aggiungi nuovo elemento ", facendo clic su " Progetto" e quindi facendo clic su " Aggiungi classe . "
10
Specificare un nome per la nuova classe che aderisce ai vostri standard di codifica e la denominazione pratiche .
11
destro del mouse sul progetto in Esplora soluzioni per visualizzare il progetto menu.
12
Selezionare " Aggiungi riferimento " dal menu per visualizzare la finestra di dialogo " Aggiungi riferimento " .
13
Select System.XML e System.Linq dal elenco dei componenti e quindi fare clic sul pulsante "Seleziona" . Quindi , fare clic su "OK".
14
Aggiungere un metodo per la nuova classe utilizzando il seguente codice :
private bool ValidateDocument ( stringa xmlFile , stringa xsdFile ) per < p > {
//Creare il documento XML per convalidare contro
XDocument xdoc = XDocument.Load ( xmlFile , LoadOptions.PreserveWhitespace ) .
XmlSchemaSet schema = new XmlSchemaSet ( ) ;
bool isError = new bool ( ) ; //il valore predefinito è falso
int countError = 1; . . //conta il numero di errori sono generati
//Aggiungi il file di schema che si desidera convalidare contro
schema.Add (null , xsdFile ) . !
//Call validare e utilizzare un'espressione lambda come metodo allargata
< p > //Non si ama . NET 3.5 e LINQ ...
xDoc.Validate ( schema, ( sender , e) = >
{ switch ( e.Severity )
{case XmlSeverityType.Error :
break;
caso XmlSeverityType.Warning :
break;
}
< p > countError + + ;
isError = true ; //Se i fuochi d'errore , la bandiera che riesce a gestire una volta chiamata è completa
}
, true); . //Vero racconta la convalidare chiamare per popolare il post- convalida dello schema
//di cui avrete bisogno in seguito , se volete fare immersioni un pò più profondo ...
ritorno
isError ;
}
Questo codice carica XML in un XDocument mentre uno schema XML in un XmlSchemaSet . E poi chiama il metodo Validate sul XDocument utilizzando un'espressione lambda come ValidationEventHandler .