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 :

Erreur de DTD lors de la création d'un objet JDOM


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut Erreur de DTD lors de la création d'un objet JDOM
    Bonjour,

    Je réalise actuellement un parseur validateur XML - XSD. Mais je suis coincé à cause d'une erreur lors de la création de mon document JDOM. Pouvez-vous me dire comme résoudre ce soucis, svp ?
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    try 
            { 
                DOMParser dom = new DOMParser();     
                DOMBuilder jdomParser = new DOMBuilder();          
               dom.parse("Martin.xml");      
               org.w3c.dom.Document docDom  = dom.getDocument(); 
     
                //Récupération de notre arbre JDOM 
                org.jdom.Document jdomDoc = jdomParser.build(docDom); 
            } 
            catch(Exception e) 
            { 
                 e.printStackTrace(); 
            }
    Et le message d'erreur obtenu :
    org.jdom.IllegalAddException: A DocType cannot be added after the root element
    at org.jdom.ContentList.documentCanContain(ContentList.java:169)
    at org.jdom.ContentList.add(ContentList.java:205)
    at org.jdom.ContentList.add(ContentList.java:140)
    at java.util.AbstractList.add(AbstractList.java:89)
    at org.jdom.Document.addContent(Document.java:319)
    at org.jdom.DefaultJDOMFactory.addContent(DefaultJDOMFactory.java:177)
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:337)
    at org.jdom.input.DOMBuilder.buildTree(DOMBuilder.java:170)
    at org.jdom.input.DOMBuilder.build(DOMBuilder.java:135)
    at DOMValidateur.validXMLWithDOM(DOMValidateur.java:51)
    at ParserXML.main(ParserXML.java:17)

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Salut Kerod,

    a priori le problème vient de ta source XML, pas de ton code. Tu peux poster le début de martin.xml, il semblerait que le DOCTYPE soit mal positionné...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ce n'est qu'un exemple de fichier
    Code xml : 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="UTF-8"?>
    <Candidate xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CandidatSchema.xsd">
        <Name> Martin </Name>
        <Diploma>
            <Degree> Bac+3 </Degree>
            <Title> Licence </Title>
            <Field> Computer Science </Field>
            <ObtentionYear> 2002 </ObtentionYear>
            <AverageMark>B</AverageMark>
        </Diploma>
        <ProfessionnalExperience>
            <Type> Stage  </Type>
            <Role> Programmeur </Role>
            <Duration> 8 </Duration>
        </ProfessionnalExperience>
        <EnterLevel>M1</EnterLevel>
    </Candidate>
    Le XSD :
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
     
        <xsd:complexType name="ProfExpType">
     
            <xsd:sequence>
     
                <xsd:element name="Type" type="xsd:string"/>
     
                <xsd:element name="Role" type="xsd:string"/>
     
                <xsd:element name="Duration" type="xsd:string"/>
     
            </xsd:sequence>
     
        </xsd:complexType>
     
        <xsd:complexType name="DiplomaType">
     
            <xsd:sequence>
     
                <xsd:element name="Degree" type="xsd:string"/>
     
                <xsd:element name="Title" type="xsd:string"/>
     
                <xsd:element name="Field" type="xsd:string"/>
     
                <xsd:element name="ObtentionYear" type="xsd:int"/>
     
                <xsd:element name="AverageMark" type="xsd:float"/>
     
            </xsd:sequence>
     
        </xsd:complexType>
     
        <xsd:complexType name="CandidateType">
     
            <xsd:sequence>
     
                <xsd:element name="Name" type="xsd:string"/>
     
                <xsd:element name="FirstName" type="xsd:string" maxOccurs="unbounded"/>
     
                <xsd:element name="Diploma" type="DiplomaType"/>
     
                <xsd:element name="ProfessionnalExperience" type="ProfExpType" minOccurs="0"/>
     
                <xsd:element name="EnterLevel" type="xsd:string"/>
     
            </xsd:sequence>
     
        </xsd:complexType>
     
        <xsd:element name="Candidate" type="CandidateType"/>
     
    </xsd:schema>
    De plus est-ce vraiment possible de valider un document XML de ce genre avec le schéma qui va avec en lui spécifiant nous même l'url du schéma, tout ça avec JDOM ??

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    EN fait j'ai modifié mon source et je n'ai plus l'erreur de DTD en récupérant juste le premier Element de mon arbre. C'est-à-dire avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dom.parse("Martin.xml");     
     org.w3c.dom.Document docDom  = dom.getDocument();
    Maintenant le véritable soucis se pose lors de la configuration pour la validation du XML avec le passage de l'url XSD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DOMConfiguration config = docDom.getDomConfig();
    config.setParameter("schema-type", "http://www.w3.org/2001/XMLSchema");
    config.setParameter("validate", Boolean.TRUE);
    config.setParameter("schema-location", "CandidatSchema.xsd");
    docDom.normalizeDocument();
    Mais il me sort une erreur, sur DOMConfiguration config = docDom.getDomConfig() à l'execution :
    Exception in thread "main" java.lang.AbstractMethodError: org.apache.xerces.dom.DeferredDocumentImpl.getDomConfig()Lorg/w3c/dom/DOMConfiguration;
    Une idée sur comment faire disparaitre cette erreur, stp ?

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/07/2011, 13h57
  2. [XL-2003] Erreur Runtime 1004 lors de la création d'une validation en liste pour une cellule
    Par Louhike dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/07/2010, 15h27
  3. Réponses: 6
    Dernier message: 09/03/2008, 13h12
  4. Erreur ora 30574 lors de la création d'1 rollback_segment
    Par leng dans le forum Administration
    Réponses: 15
    Dernier message: 08/12/2006, 17h02
  5. Réponses: 4
    Dernier message: 23/05/2006, 17h04

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