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 :

Obtenir le contenu intégral d'une balise XML


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Consultant E-Business
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Par défaut Obtenir le contenu intégral d'une balise XML
    Bonjour,
    Travaillant à base d'AJAX pour une interface admin, je rencontre un problème qui commence sérieusement à m'agacer.

    Pour le texte principal de pages, je souhaite récupérer du contenu dans un doc XML dont voici un exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <contenu>
    <pageContenu>liens</pageContenu>
     
    <texteContenu>
    Un morceau de texte...
    <a href="azerty">
    <b>Un nom de site...</b>
    </a>
    <br/>
    ...Suite du contenu...
    </texteContenu>
    </contenu>
    Je cherche à récupérer entièrement le contenu de la balise <texteContenu>. C'est-à-dire, j'aimerai son texte et ses fils en intégralité.
    Ceci ne me ramène que le texte de la balise se trouvant avant la toute première balise (fils) de <texteContenu> ("Un morceau de texte..."):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    doc.getElementsByTagName('texteContenu').firstChild.nodeValue
    Ma question est donc, avant de continuer à me casser la tête à coups de childNodes etc, y a-t-il un moyen de récupérer tout le contenu de la balise, y compris ses fils et le texte entre des fils et après le dernier des fils?

  2. #2
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Ca revient à sérialiser un noeud. Sous IE, les noeuds ont une propriété "xml" qui retourne la représentation textuelle du noeud, mais comme FF ne possède pas une telle propriété, tu peux la simuler comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function serializeNode(node)
    {
     if(XMLSerializer)
     {
       return new XMLSerializer().serializeToString(node);
     }
     else
       return node.xml;
    }

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    doc.getElementsByTagName('texteContenu')[0].innerHTML
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    doc.getElementsByTagName('texteContenu') ?
    tu récupères l'intégralité , après a toi de le parser ...

  5. #5
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    @SF sur du XML, pas sur le DOM de la page

  6. #6
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    avec un documentfragment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var frag = document.createDocumentFragment();
    frag.innerHTML=doc.getElementsByTagName('texteContenu')[0].innerHTML
    et du coup tu peux renaviguer ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre averti
    Profil pro
    Consultant E-Business
    Inscrit en
    Mai 2007
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant E-Business

    Informations forums :
    Inscription : Mai 2007
    Messages : 39
    Par défaut
    Eh bien un grand merci mon problème est résolu.

    @le_chomeur: ma question était justement de ne pas avoir à parser le noeud, c'est assez fastidieux et c'est toujours mieux d'essayer de trouver une solution propre et rapide.

    @SpaceFrog: j'ai essayer ta solution mais je ça n'a pas marché =( merci quand même!

    @DoubleU: la serialisation fonctionne très bien, merci beaucoup!

    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
     
    function toto(...)
    {
    ...
    document.getElementById('azerty').value =
    serializeNode(doc.getElementsByTagName('texteContenu')[0]);
    ...
    }
     
    function serializeNode(node)
    {
    	if(XMLSerializer)
    	{
    		return new XMLSerializer().serializeToString(node);
    	}
    	else
    		return node.xml;
    }

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    xml = evil
    bon j'ai encore une marge de progression ^^
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

Discussions similaires

  1. [XML] Recupérer le contenu d'une balise XML en PHP
    Par Higestromm dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 15/07/2010, 09h57
  2. obtenir le contenu intégral d'une div
    Par goldor dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 05/02/2009, 18h31
  3. [SimpleXML] Récupérer contenu d'une balise XML contenant du HTML
    Par samichon dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 24/08/2007, 08h36
  4. [AJAX] récupérer contenu d'une balise xml
    Par Braillane dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 27/06/2007, 08h08
  5. [xsl] mauvaise interprétation du contenu d'une balise XML
    Par Cédric B. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/01/2006, 12h59

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