Avatar billede predator Nybegynder
11. oktober 2007 - 09:59 Der er 3 kommentarer og
1 løsning

Validering af XML-fil mod specifikt XSD-skema

Hej alle,

findes der ikke et lille simpelt program der kan validere en given XML-fil mod en given XSD-fil? Jeg har installeret en prøveudgave af Altova's programpakke, men syntes måske det er lidt voldsomt at købe den for denne ene funktionalitet. Så det skal være noget andet, freeware, shareware, el.lign.
Avatar billede arne_v Ekspert
11. oktober 2007 - 15:11 #1
Java program:

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.SAXException;
import org.xml.sax.SAXNotRecognizedException;
import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

public class ValWithSaxAndSchema {
  static final String JAXP_SCHEMA_LANGUAGE =
      "http://java.sun.com/xml/jaxp/properties/schemaLanguage";
  static final String W3C_XML_SCHEMA =
        "http://www.w3.org/2001/XMLSchema";
  static final String JAXP_SCHEMA_SOURCE =
      "http://java.sun.com/xml/jaxp/properties/schemaSource";
  public static void main(String[] args) {
      try {
        SAXParserFactory factory = SAXParserFactory.newInstance();
        factory.setNamespaceAware(true);
        factory.setValidating(true);
        SAXParser saxParser = factory.newSAXParser();
        saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
        saxParser.setProperty(JAXP_SCHEMA_SOURCE, new File(args[1]));
        saxParser.parse(new File(args[0]), new ValHandler());
      } catch (SAXNotRecognizedException e) {
        e.printStackTrace();
      } catch (SAXNotSupportedException e) {
        e.printStackTrace();
      } catch (FactoryConfigurationError e) {
        e.printStackTrace();
      } catch (ParserConfigurationException e) {
        e.printStackTrace();
      } catch (SAXException e) {
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      }
  }
}

class ValHandler extends DefaultHandler {
    public void error(SAXParseException e) {
        e.printStackTrace();
    }
    public void warning(SAXParseException e) {
        e.printStackTrace();
    }
}
Avatar billede arne_v Ekspert
11. oktober 2007 - 15:12 #2
javac ValWithSaxAndSchema.java
java ValWithSaxAndSchema dinxmlfil dinschemafil
Avatar billede arne_v Ekspert
28. oktober 2007 - 02:55 #3
OK ?
Avatar billede predator Nybegynder
20. november 2007 - 16:44 #4
Sorry, har slet ikke kigget på det og har fundet en anden løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester