Validazione di XML con XSD

Ma è possibile che non esiste un programma per validare un file XML passandogli un XSD?

Cercando su internet ho trovato degli IDE per gestire XML, per scrivere XSD, per XSLT, per testare le trasformate, per tutto, e fanno anche la validazione, ma sono programmi da 20Mb, da installare, da comprare, e che fanno anche il caffè in formato XML... ma non uno stupido programma che prende solo un file XML e lo valida contro un XSD.

Allora me lo sono fatto io... con .NET è veramente facile...

 using System;
 
using System.Text;
 
using System.Xml;
 
using System.Xml.Schema;
 
 
namespace Com.Piyosailing.Xml.Validator
 {
     
public class XmlValidator
     {
10          
// salvo lo stato della validazione
11          
private bool _isValid = true;
12          
private StringBuilder _stringBuilder = new StringBuilder();
13  
14          
//Propretà per fornire al chiamante il risultato della validazione
15          
public string ValidationErrors 
16          {
17              
get 
18              
{
19                  
return _stringBuilder.ToString();
20              }
21          }
22  
23          
// Metodo che valida
24          
public bool Validate(string xmlPath, string xsdPath,string targetNameSpace) 
25          {
26              XmlTextReader reader = 
null;
27              XmlValidatingReader vReader = 
null;
28              XmlSchemaCollection myschema = 
new XmlSchemaCollection();
29              
try
30              
{
31                  
//Creo XML reader
32                  
reader = new XmlTextReader(xmlPath);
33                  
//Incapsulo XML reader dentro Validiting reader
34                  
vReader = new XmlValidatingReader(reader);
35                  vReader.ValidationEventHandler
36                          +=
new ValidationEventHandler(vReader_ValidationEventHandler);
37  
38                  myschema.Add(targetNameSpace, xsdPath);
39  
40                  vReader.ValidationType = ValidationType.Schema;
41                  vReader.Schemas.Add(myschema);
42  
43                  
//Leggo il file
44                  //Se ci fossero errori viene chiamato l'handler
45                  
while (vReader.Read()) {}
46              }
47              
catch
48              
{
49                  _isValid=
false;
50              }
51              
finally
52              
{
53                  
if(reader.ReadState!=ReadState.Closed)
54                      reader.Close();
55                  
if(vReader.ReadState!=ReadState.Closed)
56                      vReader.Close();
57              }
58  
59              
return _isValid;
60          }
61  
62          
//Event Handler per cattuare tutti gli errori di validazione
63          
private void vReader_ValidationEventHandler(object sender, ValidationEventArgs e)
64          {
65              _isValid = 
false;
66              _stringBuilder.AppendFormat("\r\nValidation Error: {0}", e.Message);
67          }
68      }
69  }

Questa è solo la libreria che valida, l'ho estrapolata dal programmino da linea di comando che ho fatto per testare i file xml... e viene usata as is nella libreria di processing XML.

powered by IMHO 1.2

posted @ giovedì 26 maggio 2005 14:55

Print

Comments on this entry:

# Re: Validazione di XML con XSD

Left by Fabio Cozzolino at 26/05/2005 15:49
Gravatar
Igor,
basta utilizzare i formatters relativi. Con l'installazione sono già presenti i formatters per C# e qualche altro linguaggio (ora non ricordo quale).

# re: Validazione di XML con XSD

Left by Simone Chiaretta at 26/05/2005 17:49
Gravatar
Beh, in realtà avrei cmq dovuto scrivere quella funzione per validare l'XML all'interno del workflow del mio applicativo.
Comments have been closed on this topic.
«aprile»
domlunmarmergiovensab
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011