Avatar billede vedikkebedre Nybegynder
19. april 2005 - 15:22 Der er 7 kommentarer og
1 løsning

Få fat i XML encoding før parsning

Jeg sidder med et lille problem.

Vil gerne validere en XML-fil inden jeg parser den - primært fordi jeg benytter SAX-parser vil det være rart at vide at alle data er valide som XML.

Men jeg vil gerne vide hvilke encoding XML-filen er leveret i inden jeg forsøger at åbne den...

Kan man det ??
Avatar billede arne_v Ekspert
19. april 2005 - 15:26 #1
Var det ikke nemmere at lade parsningen validere ?

Hvis du ikke vil parse først eller hvertfald starte på at parse bliver du vel nødt
til at læse filen med normal IO og læse encoding attributten.
Avatar billede vedikkebedre Nybegynder
19. april 2005 - 15:46 #2
Du har sikkert ret

Tillægsspørgsmål:

Jeg prøver at få jobbet indlæst 2 gange om ugen via CRON - men kan ikke forstå syntaksen for at have 2 dage med....

Har prøvet med:

<cron>0 0 4  * MAN,THURS</cron>

Men det virker ikke...?
Avatar billede vedikkebedre Nybegynder
19. april 2005 - 15:58 #3
Fik løst det sidste selv - skulle bare stave rigtig og skrive MON og ikke MAN for mandag ....
Avatar billede vedikkebedre Nybegynder
19. april 2005 - 15:58 #4
Arne: læg et svar og du skal få din efortjente point for vejledningen
Avatar billede arne_v Ekspert
19. april 2005 - 16:02 #5
ok

PS: jeg har et eksempel på schema validering med SAX liggende
Avatar billede arne_v Ekspert
30. april 2005 - 16:59 #6
så mangler du bare at acceptere svaret
Avatar billede vedikkebedre Nybegynder
08. maj 2005 - 09:26 #7
det vil da være rart med et eksempel  !!!!    :)
Avatar billede arne_v Ekspert
08. maj 2005 - 11:53 #8
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 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