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

JavaScript Discussion :

[DOM] Load XML non complet


Sujet :

JavaScript

  1. #1
    darthmower
    Invité(e)
    Par défaut [DOM] Load XML non complet
    Bonjour,

    J'ai un problème que je n'ai jamais eu et qui me surprend vraiment beaucoup.

    J'ai un fichier xml comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <!DOCTYPE monde SYSTEM "monde.dtd">
    <monde>
    	<pays nom="france" nombre="3">
    		<departement numero="1" coordonnees="283, 201, 293, 198, 314, 209, 312, 222, 305, 232, 299, 223, 288, 226, 281, 220">Ain</departement>
    		<departement numero="2" coordonnees="233, 44, 255, 45, 253, 67, 243, 71, 239, 89, 231, 81, 228, 81, 224, 73, 228, 69, 228, 55">Aisne</departement>
    		<departement numero="3" coordonnees="226, 189, 250, 200, 248, 217, 223, 213, 222, 206, 213, 211, 204, 205">Allier</departement>
    	</pays>
    </monde>
    J'ai le dtd qui va bien et qui fonctionne je peux l'assurer puisque mon script js ne me rend aucune erreur quand je load.
    Le problème est que cela ne me charge que <monde></monde> et pas ce qu'il y a à l'intérieur puisque je n'arrive à acceder qu'à monde.

    Je n'ai même pas de js spécifique à vous montrer puisque pour l'instant je ne fais que tester mon xml via des console.log.

    En js j'ai testé cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    console.log(xml.firstChild.nodeName);
    Qui me donne: monde

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    console.log(xml.firstChild.firstChild.nodeName);
    Qui fait rien

    J'aurais voulu savoir si quelqu'un saurait pourquoi j'ai ce soucis?

    Merci de votre aide,

    Gripsou

    PS le dtd au cas où:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <!ELEMENT monde (pays+)>
    <!ELEMENT pays (departement*)>
            <!ATTLIST pays nom ID #REQUIRED nombre CDATA #REQUIRED>
    <!ELEMENT departement (#PCDATA)>
            <!ATTLIST departement numero ID #REQUIRED coordonees CDATA #REQUIRED>
    Dernière modification par darthmower ; 10/08/2008 à 18h18.

  2. #2
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    sous ie le premier noueud est le texte vide entre les 2 tag!
    <monde><!--texte vide-->
    <pays nom="france" nombre="3">
    donc sous le noeud "monde"

  3. #3
    darthmower
    Invité(e)
    Par défaut
    Pour l'instant j'en suis qu'au test donc j'ai fait que pour firefox3 et cela ne marche pas avec firefox3 (j'utilise firebug pour faire mes tests)

    Tu voudrais dire qu'il faut coller tout mon xml?

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Oui, parcequ'il me semble que c'est plutôt FF et non IE qui rajoute des noeuds vides...

  5. #5
    darthmower
    Invité(e)
    Par défaut
    Ok merci, je testerais ça ce soir, mais je comprends pas bien pourquoi il prend ces sauts de lignes, espaces en compte? Il aime les \n et compagnies?

  6. #6
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    mets un break point et regarde les valeurs...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xml.firstChild.childNodes[1].nodeName);

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Non, c'est la structure du DOM qui veut ça.
    Au regard du DOM FF (qui est à priori le plus conforme aux recommandations du W3C, mais c'est sujet à polémiques) tout dans un document est un noeud alors que pour IE, les sauts de lignes et espaces ne le sont pas.

  8. #8
    darthmower
    Invité(e)
    Par défaut
    J'ai déjà testé tout cela mais le comportement de console.log est mieux car il donne plus d'informations que alert. Et de lus cela donne undefined ceci si mes souvenirs sont bon.

  9. #9
    Membre émérite
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Points : 2 814
    Points
    2 814
    Par défaut
    il me retourne pays. mais j'ai ff2

  10. #10
    darthmower
    Invité(e)
    Par défaut
    Je comprends mieux pourquoi dans firebug et lorsque je regardais les noeuds etc via dom il me mettait \n.... ( . = espace). Donc je pense que cela marchera si je colle tout. Cependant lisibilité = 0. Mais je pense généré un flux xml via des requêtes sur bdd donc au final ça sera bon (plus de fichier).

    Tu utilises quelle manière de loader le fichier xml?

  11. #11
    darthmower
    Invité(e)
    Par défaut
    Je comprends plus de trop. J'ai appliqué la solution tout collé et apparemment firebug lorsque je le parcours reconnait très bien mon fichier xml, cependant dès que je veux appliquer des fonctions DOM qui vont cherché plus loin que monde il me met undefined

    exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xml.firstChild.childNodes[1].nodeName);
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xml.firstChild.firstChild.nodeName);
    alors que si je reste au niveau de monde il accepte:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xml.firstChild.nodeName);
    Ca me renverra monde.

    j'avoue ne pas trop comprendre le problème alors que firebug me liste bien mes firstChild, lastChild, nextSibling etc..

  12. #12
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(xml.documentElement.firstChild.childNodes[1].nodeName);

  13. #13
    darthmower
    Invité(e)
    Par défaut
    Merci tu es génial Bovino, peux-tu juste m'expliquer un peu pourquoi il faut utiliser documentElement?

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ca correspond au root de ton document XML.

  15. #15
    darthmower
    Invité(e)
    Par défaut
    Merci Dieu Gnu! u_u *fait une offrande en remerciement*

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

Discussions similaires

  1. [DOM] Validation xml avec PHP
    Par thefaycal dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 26/01/2006, 21h15
  2. [DOM] Parsage XML en PHP 4
    Par Huntress dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/12/2005, 22h24
  3. [JAXB/DOM] Parser Xml : possible avec path reel et non uri !
    Par Jaxofun dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 01/08/2005, 10h04
  4. Problème : XML non valide...
    Par loupdeau dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 08/04/2005, 15h12

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