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 :

DeferredDocumentImpl à la place d'un Document


Sujet :

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

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 10
    Par défaut DeferredDocumentImpl à la place d'un Document
    Bonjour,

    J'utilise le code suivant pour parser un fichier xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.apache.log4j.Logger;
    import org.w3c.dom.Document;
    ...
    DocumentBuilderFactory oDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder oDocumentBuilder = oDocumentBuilderFactory.newDocumentBuilder();
    File fileXml = new File(oResources.getString(ConfigConstants.MAPPING_XML_FILE));
    Document docProperties = oDocumentBuilder.parse(fileXml);

    L'objet docProperties est sensé être un objet Document. Or le builder retourne un DeferredDocumentImpl qui a tout d'un xml, sauf le contenu...

    Ca ne déclenche pas d'erreur, sauf par la suite où j'essaie d'accéder au contenu : null pointer exception...

    Exécution sous Java 1.5/Mac OSX.4.9

    Qu'est-ce que cet objet DeferredDocumentImpl et comment s'en servir (je n'ai pas trouvé d'exemple...).

    Merci

    Rémi

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Document n'est qu'une interface. Chaque factory te reverra sa sauce de l'implémentation. Dans ton cas, c'est une implémentation qui viens de xerces. Faudrait voir la tete de ton nullpointer exception, mais je suppose que le file sur lequel tu pointe n'existe pas ....

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2002
    Messages : 10
    Par défaut
    Voici un code plus complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DocumentBuilderFactory oDocumentBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder oDocumentBuilder = oDocumentBuilderFactory.newDocumentBuilder();
    File fileXml = new File(oResources.getString(ConfigConstants.MAPPING_XML_FILE));
    Document docProperties = oDocumentBuilder.parse(fileXml);
    System.out.println (docProperties.getElementsByTagName(MappingConstants.PROPERTY_NODE));
     
    NodeList properties = docProperties.getElementsByTagName(MappingConstants.PROPERTY_NODE);
    for(int i=0; i<properties.getLength(); i++) {
        System.out.println (properties.item(i).getNodeName() + ":" + properties.item(i).getNodeValue());
        mappingProperties.add(properties.item(i));
    }
    Et la sortie qui en résulte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl@35e6e3
    property:null
    property:null
    property:null
    property:null
    property:null
    property:null
    property:null
    Je récupère bien 7 balises dont le nom est "property" (conforme au contenu du fichier xml), mais impossible d'accèder à la valeur de ces balises : item(i) n'est pas null mais renvoi des valeurs nulles.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Comme tes nodes correspondent à des tags, si tu regarde

    http://java.sun.com/j2se/1.4.2/docs/.../dom/Node.html


    tu verra qu'il est clairement marqué que les tag renvoient null à la propriété NodeValue. Seuls les CData, attributs, texte, instructions et commentaire ont une value. Le reste n'en a pas. Si ce que tu veux c'est le texte a l'intérieur de ton tag, il se trouve sous forme de child nodes de type text ou cdata. Tu dois donc explorer les fils.

Discussions similaires

  1. Réponses: 6
    Dernier message: 29/06/2012, 14h06
  2. [SP2010] Mise en place workflow sur documents
    Par SoaB dans le forum Configuration
    Réponses: 0
    Dernier message: 14/03/2012, 17h18
  3. valeur de variable a la place du nom dans document.
    Par keaton7 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 19/01/2009, 11h37
  4. Mise en place d'une gestion électronique de documents
    Par mat736 dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 22/12/2006, 14h09
  5. Mise en place d'une note en fin de document
    Par loblique dans le forum Mise en forme
    Réponses: 1
    Dernier message: 21/12/2006, 11h06

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