Come usare XSD in Rete

September 9

XML Schema Definition, XSD, è lo standard più ampiamente accettato per la definizione della struttura dei documenti XML. Gli schemi possono definire restrizioni, attributi facoltativi e obbligatori all'interno di un documento XML. Net permette la validazione di 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 cattura gli errori nella formattazione dei dati che altrimenti potrebbero essere trascurato.

istruzione

Convalida XML Utilizzando XmlReaderSettings

1 Creare un nuovo progetto C # del tipo desiderato in Visual Studio. Se si desidera aggiungere la convalida XML per un progetto esistente, è possibile saltare questo passaggio.

2 Aprire il "Add New Item" finestra di dialogo facendo clic su "Progetto" e quindi facendo clic su "Aggiungi classe."

3 Specificare un nome per la nuova classe che aderisce ai vostri codifica standard e la denominazione delle pratiche.

4 Fare clic con il progetto in Esplora soluzioni per visualizzare il menu del progetto.

5 Selezionare "Add Reference" dal menu per visualizzare la finestra di dialogo "Aggiungi riferimento".

6 Selezionare System.XML dall'elenco dei componenti e quindi fare clic sul pulsante "Seleziona". Quindi, fai clic su "OK".

7 Aggiungere un metodo per la nuova classe utilizzando il seguente codice:

bool ValidateDocument privato (string XMLFILE stringa xsdFile)

{

XmlReaderSettings settings = new XmlReaderSettings{ValidationType

= ValidationType.Schema};

settings.Schemas.Add (XmlSchema.Read (XmlReader.Create (xsdFile)));

lettore di XmlReader = XmlReader.Create (XMLFILE impostazioni);

provare

{

while (reader.Read ());

return true;

}

catch (XmlSchemaValidationException ex)

{

// Indica si è verificato un errore di convalida.

return false;

}

}

Questo codice carica XML in un XmlReader e uno schema XML in un XmlSchemaSet. Tutti gli attributi e gli elementi del documento XML vengono convalidati quando il documento viene letto; non vi è alcuna necessità di visitare elementi singolarmente. Se il documento XML non è valido è gettato un XmlSchemaValidationException. L'eccezione include un messaggio di errore, il numero di riga e la posizione in cui si è verificato l'errore. L'elaborazione si arresta sul primo errore riscontrato.

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;

ValidationHandler static void (object sender, ValidationEventArgs e)

{

// Evento di processo qui

}

Convalida XML utilizzando LINQ

8 Creare un nuovo progetto C # del tipo desiderato in Visual Studio. Se si desidera aggiungere la convalida XML per un progetto esistente, è possibile saltare questo passaggio.

9 Aprire il "Add New Item" finestra di dialogo facendo clic su "Progetto" e quindi facendo clic su "Aggiungi classe."

10 Specificare un nome per la nuova classe che aderisce ai vostri codifica standard e la denominazione delle pratiche.

11 Fare clic con il progetto in Esplora soluzioni per visualizzare il menu del progetto.

12 Selezionare "Add Reference" dal menu per visualizzare la finestra di dialogo "Aggiungi riferimento".

13 Selezionare System.XML e System.Linq dall'elenco dei componenti e quindi fare clic sul pulsante "Seleziona". Quindi, fai clic su "OK".

14 Aggiungere un metodo per la nuova classe utilizzando il seguente codice:

bool ValidateDocument privato (string XMLFILE stringa xsdFile)

{

// Create the XML document to validate against.

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 hanno generato.

// Aggiungere il file di schema che si desidera convalidare contro.

schema.Add (null, xsdFile);

// Chiama convalidare e utilizzare un'espressione lambda come metodo esteso!

// Non ami .NET 3.5 e LINQ ...

xDoc.Validate (schema, (mittente, e) =>

{Switch (e.Severity)

{Case XmlSeverityType.Error:

rompere;

caso XmlSeverityType.Warning:

rompere;

}

countError ++;

isError = true; // Se i fuochi d'errore, la bandiera a gestire una volta chiamata è completa.

}

, vero); // Vero racconta la chiamata di convalida per popolare post-schema-convalida

// Che sarà necessario in seguito, se si desidera immergersi un pò più a fondo ...

tornare isError;

}

Questo codice carica XML in un XDocument e uno schema XML in un XmlSchemaSet. E poi chiama il metodo validate sulla XDocument utilizzando un'espressione lambda come ValidationEventHandler.