Autore Topic: Validator (xsd) per xml  (Letto 483 volte)

Offline simoo88

  • Nuovo arrivato
  • *
  • Post: 10
  • Respect: +1
    • Mostra profilo
  • Sistema operativo:
    windows 7
Validator (xsd) per xml
« il: 14 Maggio 2012, 18:14:57 CEST »
0
Ciao a tutti vi scrivo per segnarlarvi questo problema:

dovrei creare un metodo che ricevendo in input una stringa (che rappresenta il mio xml ) e un path (il path dell'xsd) mi dica se l'xml è effettivamente valido oppure no....

Diciamo che il progetto è stato costruito con le API 10 di Android in particolare per le versioni 2.3.3. e precedenti.

Questo è il codice che ho prodotto:

Codice (Java): [Seleziona]
 public static Document buildDoc(String xml, String xsd){
         // parse an XML document into a DOM tree
        Document document = null;
       
       try {            
               
           DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance();
            parserFactory.setNamespaceAware(true);
            DocumentBuilder parserdb = parserFactory.newDocumentBuilder();
            doc = parserdb.parse(new InputSource( new StringReader(xml)  ));

           SchemaFactory factory = SchemaFactory.newInstance(
                          XMLConstants.W3C_XML_SCHEMA_NS_URI);     //quì il SIMULATORE di eclipse solleva una eccezione!!!
         
           
            Source schemaFile = new StreamSource(new File(xsd));
            Schema schema = factory.newSchema(schemaFile);

           
            Validator validator = schema.newValidator();

            // validate the DOM tree
            validator.validate(new DOMSource(doc));
            System.out.println("Validation OK!");
        } catch (SAXException e) {
            // instance document is invalid!
                 System.err.println("Validation ERROR!");
                e.printStackTrace();
               
        } catch (ParserConfigurationException e) {
                        // TODO Auto-generated catch block
                 System.err.println("Validation ERROR!");
                        e.printStackTrace();
        } catch (IllegalArgumentException e) {
                        // TODO Auto-generated catch block
                 System.err.println("Validation ERROR!");              
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                         System.err.println("Validation ERROR!");
                        e.printStackTrace();
                       
                }

        return doc;

    }


Quello che mi succede è che nella riga dove c'è l'istruzione:
Codice (Java): [Seleziona]
  SchemaFactory factory = SchemaFactory.newInstance(
                          XMLConstants.W3C_XML_SCHEMA_NS_URI);  

il simulatore solleva un'eccezione di: IllegalArgumentException
In dettaglio ecco l'errore:
Codice (Java): [Seleziona]
 E/AndroidRuntime(4770): Caused by: java.lang.IllegalArgumentException: [url=http://www.w3.org/2001/XMLSchema]XML Schema[/url]

Qualcuno riesce ad aiutarmi?
Un saluto a tutti!