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

«maggio»
domlunmarmergiovensab
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234