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 :

Problème de validation XML, XSD avec JDOM [JDOM]


Sujet :

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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 24
    Points
    24
    Par défaut Problème de validation XML, XSD avec JDOM
    Bonjour à tous,

    Je souhaite valider mon fichier XML avec un fichier XSD, j'ai développé une classe en JDOM.Je n'arrive pas à faire valider.ça serait cooool de votre part de me proposer une solution.
    Je vous remercie à l'avance

    voici mon fichier XML:
    Person.xml
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <personnes xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="Person.xsd">	
    	<personne >
    		<nom>dupon</nom>
    		<prenom>pierre</prenom>	
    	</personne>
    	<personne>
    		<nom>durant</nom>
    		<prenom>jean</prenom>	
    	</personne>
    	<personne>
    		<nom>martin</nom>
    		<prenom>gilles</prenom>	
    	</personne>
    </personnes>

    voici mon fichier xsd:
    Person.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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0"> 
    	<xsd:element name="personnes">
    			<xsd:complexType>
    				<xsd:sequence>	
    					<xsd:element name="personne" maxOccurs="unbounded">
    						<xsd:complexType>
    							<xsd:sequence>
    								<xsd:element name="nom" type="xsd:string" minOccurs="1" maxOccurs="1"/>
    								<xsd:element name="prenom" type="xsd:string" minOccurs="1" maxOccurs="1"/>		
    							</xsd:sequence>
    						</xsd:complexType>
    					</xsd:element>
    				</xsd:sequence>
    			</xsd:complexType>
    	</xsd:element>
    </xsd:schema>


    le code java:
    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
    package xml_and_xsd_validation;
    import java.io.File;
    import java.io.IOException;
     
    import org.jdom.Document;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
     
     
    public class Test
    {
        public static void main( String[] args ){
     
        	try 
        	{
    			XMLFile();
    		} 
        	catch (JDOMException e) {
    			e.printStackTrace();
    		} 
        	catch (IOException e) {
    			e.printStackTrace();
    		}
        }
     
       public static void XMLFile() throws JDOMException, IOException{
     
    	    SAXBuilder builder = new SAXBuilder(true);
     
     
    	    builder.setValidation(true);
     
    	    builder.setFeature("http://xml.org/sax/features/validation", true);
    	    builder.setFeature("http://apache.org/xml/features/validation/schema",true);
    	    builder.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
    	    builder.setFeature("http://apache.org/xml/features/nonvalidating/load-external-xsd", true);
     
    		Document doc = builder.build(new File("C:\\Project_XML_&_XSD_JDom\\ressources\\Person.xml"));
     
       }    
    }

    voila le message de console:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    org.jdom.JDOMException: http://apache.org/xml/features/nonvalidating/load-external-xsd feature not recognized for SAX driver com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser
    	at org.jdom.input.SAXBuilder.internalSetFeature(SAXBuilder.java:827)
    	at org.jdom.input.SAXBuilder.setFeaturesAndProperties(SAXBuilder.java:766)
    	at org.jdom.input.SAXBuilder.createParser(SAXBuilder.java:621)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:489)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:905)
    	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:884)
    	at xml_and_xsd_validation.Test.XMLFile(Test.java:45)
    	at xml_and_xsd_validation.Test.main(Test.java:16)

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Points : 2 560
    Points
    2 560
    Par défaut
    Bonjour,
    pour valider un fichier xml avec un schema (.xsd) avec JDOM, je m'étais juste contenté de cet exemple dans la FAQ http://www.jdom.org/docs/faq.html#a0360

    en gros, comme indiqué dans ton exception, tu devrais juste utiliser ceci et voir ce que cela va donner
    Code "java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SAXBuilder builder =  new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
    builder.setFeature("http://apache.org/xml/features/validation/schema", true);
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Java
    Inscrit en
    Août 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 16
    Points : 24
    Points
    24
    Par défaut
    Bonjour paissad,

    Je te remercie d'avoir consacré le temps et d'avoir proposé la solution
    En cherchant, sur le net j'ai trouvé une solution, je vais essayer ta solution demain.
    Merci
    voila ma solution
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
     
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.xml.*;
    import javax.xml.transform.Source;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamSource;
    import javax.xml.validation.Schema;
    import javax.xml.validation.SchemaFactory;
    import javax.xml.validation.Validator;
     
    import org.jdom.*;
    import org.jdom.input.SAXBuilder;
     
    import org.xml.sax.SAXException;
     
     
    import com.learnfactory.model.Person;
     
     
    public class Put_TogetherClasses {
     
     
    		private SAXBuilder sxb;
    		private Document document;	
    	    private SchemaFactory factory;		
    		private Source schemaFile;	
    		private Schema schema;
    	    private  Validator validator;
    	    private boolean ok;
    	    private List<Person> liste;
    	    private Person per;
    	    private Iterator iter; 
     
     
    	    public Put_TogetherClasses() throws Exception{
     
    	    	this.sxb = new SAXBuilder();
    	    	this.XMLFile();
    	    	this.mx();
    	    }
     
    	    public boolean XMLFile() throws SAXException, IOException, JDOMException {
     
    	    	this.ok =false;
    			try 
    			{
    			   this.document =sxb.build(new File("E://Project_JDom_final//ressources//Person.xml"));
    			   this.factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    			   this.schemaFile = new StreamSource(new File("E://Project_JDom_final//ressources//Person.xsd"));
     
    			   this.schema = factory.newSchema(schemaFile);
    			   this.validator = schema.newValidator();
    			   this.validator.validate(new DOMSource());
    			   this.ok = true;
     
    		    } 
    	    	catch (IOException e) {
    				e.printStackTrace();
    				System.out.println("PB : "+e.getMessage());;
    			}
    			return this.ok;
    	   }
     
    	    public void mx(){
     
    	    	if(this.ok){
     
    	    		Element root = document.getRootElement();
     
    				for(Object personne : root.getChildren("personne")) 
    				{
    					Element personneElt = (Element) personne;
     
    					System.out.print(personneElt.getChild("nom").getText());
    					System.out.print(" : ");
    					System.out.println(personneElt.getChild("prenom").getText());						
    				}		
    			}
    		}    
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSD] Problème de validation XML avec JAXB
    Par Stéphoune dans le forum Valider
    Réponses: 1
    Dernier message: 25/04/2012, 11h56
  2. [JDOM] Problème validation XML & XSD
    Par jean1979 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 03/11/2011, 12h04
  3. [JDOM] Valider XML XSD avec JDOM
    Par ALIAS200 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/05/2007, 09h39
  4. [DOM] Problème de validation XML par rapport à un Schéma XSD
    Par apisto dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 20/09/2006, 15h32
  5. [XSD] Problème Validation XML XSD
    Par scelines dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 04/05/2006, 17h54

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