Avatar billede obix Nybegynder
16. februar 2005 - 17:29 Der er 3 kommentarer

Valider Document op imod et xsd

Xsd'en har følgende adresse http://rep.oio.dk/ubl/xml/schemas/0p71/pie/pieStrict.xsd

Jeg får et Document som parameter i min javakode og det skal jeg blot validere op imod xsden. Hvordan gør man det? Der er et namespace i den men er det et problem? hvad gør jeg hvis jeg vil have xsd filen til at ligge på min egen server?

På forhånd tak.
Mvh. OBIx
Avatar billede arne_v Ekspert
16. februar 2005 - 17:42 #1
Jeg lavede engang dette eksempel på validering af XML dokument mod skema:

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
16. februar 2005 - 17:43 #2
args[0] = XML dokument
args[1] = skema
Avatar billede arne_v Ekspert
25. februar 2005 - 20:16 #3
OK ?
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