IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

charger un fichier et valider par un schéma XML


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut charger un fichier et valider par un schéma XML
    Bonjour,

    J'aimerai savori comment faire pour charger un fichier XML qui doit être validé par un schéma XML.
    Voici mes sources.

    vente.xsd
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:include schemaLocation="personne.xsd"/>
     
      <xs:element name="vente">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="objet">
              <xs:complexType>
                <xs:sequence>
                  <xs:any/>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
            <xs:element ref="idpublic"/>
          </xs:sequence>
          <xs:attribute name="date-fin" type="xs:dateTime"/>
        </xs:complexType>
      </xs:element>
     
      <xs:element name="voiture">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="couleur"/>
          </xs:sequence>
          <xs:attribute name="marque" type="xs:string"/>
          <xs:attribute name="modele" type="xs:string"/>
          <xs:attribute name="carburant" default="essence">
            <xs:simpleType>
              <xs:restriction base="xs:string">
                <xs:enumeration value="essence"/>
                <xs:enumeration value="diesel"/>
                <xs:enumeration value="GPL"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="km" type="xs:positiveInteger"/>
          <xs:attribute name="annee" type="xs:gYear"/>
        </xs:complexType>
      </xs:element>
     
      <xs:element name="couleur">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="metallisee" type="xs:boolean" default="true"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:schema>

    vente.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE voiture SYSTEM "C:/Users/Delphine/workspace/XMLEncheres/src/vente.xsd">
     
    <voiture marque="peugeot" modele="206" annee="2005" kms="60000" carburant="essence">
      <couleur metalisee="oui">bleue</couleur>
    </voiture>

    et fichier JAVA :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SAXBuilder sxb = new SAXBuilder();
    		Document doc = new Document();
    		sxb.setValidation(true);		
    		try {
    		   doc = sxb.build(new File("vente.xml"));
    		} catch (JDOMException e) {e.printStackTrace();} 
                      catch (IOException e) {e.printStackTrace();}

    Or quand j'éxécute le programme, j'ai l'erreur suivante :


    org.jdom.input.JDOMParseException: Error on line 2 of document file:///C:/Users/Delphine/workspace/XMLEncheres/src/vente.xsd: The markup declarations contained or pointed to by the document type declaration must be well-formed.
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:501)
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:807)
    at TP.JDOM.recupereInfosVente(JDOM.java:207)
    at TP.JDOM.creerVente(JDOM.java:61)
    at TP.JDOM.main(JDOM.java:250)
    Caused by: org.xml.sax.SAXParseException: The markup declarations contained or pointed to by the document type declaration must be well-formed.


    J'arrive vraiment pas à comprendre...
    Merci de votre aide

  2. #2
    Membre éclairé Avatar de Soulama
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    619
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 619
    Par défaut
    Salut,
    essaye le Code suivant(DOM api):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     DocumentBuilder db = DocumentBuilderFactory.newDocumentBuilder(  );
     Document doc = db.parse(new File("voiture.xml"));

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 62
    Par défaut Toujours pas ...
    J'ai essayé cette solution mais ca ne marche toujours pas. J'ai encore les mêmes erreurs...

    Ce que je ne comprends pas, c'est que si je valide mon document par une DTD, cela fonctionne très bien alors que si je mets un schéma XML, j'ai des erreurs !

  4. #4
    Membre averti
    Inscrit en
    Février 2008
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 40
    Par défaut
    C'est la déclaration du schéma qui est fautive. Le message d'erreur c'est ce qu'il dit d'ailleurs.

    Essaie avec vente.xml:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
     
    <voiture marque="peugeot" modele="206" annee="2005" kms="60000" carburant="essence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:/Users/Delphine/workspace/XMLEncheres/src/vente.xsd">
      <couleur metalisee="oui">bleue</couleur>
    </voiture>

Discussions similaires

  1. [XSD] Problème de XML validation par fichier XSD:org.xml.sax.SAXNotRecognizedException
    Par bareillesj dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 23/04/2007, 14h39
  2. [DOM] Validation XML par un Schéma XSD en php5
    Par cydream dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/01/2007, 10h32
  3. [JDOM] Validation avec un schéma XML
    Par tet.dum dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 22/11/2006, 22h37
  4. [DOM] validation d'un XML par un schéma
    Par zevince dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/06/2006, 16h01
  5. Réponses: 12
    Dernier message: 19/05/2005, 14h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo