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 :

Recherche d'element dans un document XML


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut Recherche d'element dans un document XML
    Bonjour

    J'ai une structure XML chargé avec ma page et je voudrais retrouvé les nœuds qui correspondent à mes critères de sélection
    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
    16
    17
    <liste>
    <papeterie>
      <objet> Crayon</objet>
      <couleur>rouge</couleur>
      <fournisseur>Guilbert</fournisseur>
    </papeterie>
    <papeterie>
      <objet> Crayon</objet>
      <couleur>vert</couleur>
      <fournisseur>Guilbert</fournisseur>
    </papeterie>
    <papeterie>
      <objet> Crayon</objet>
      <couleur>bleu</couleur>
      <fournisseur>Guilbert</fournisseur>
    </papeterie>
    </liste>
    Comment trouver dans mon XML l'objet papeterie correspondant au crayon vert Guilbert

    Je fais actuellement
    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
     
    xmlList = xmlMF.getElementsByTagName('papeterie');
    for ( var i = 0; i < xmlList.length; i++ ) {
    	var elementList = xmlList[i].childNodes;
    	flag = 0;
    	for ( var k = 0; k < elementList.length; k++ ) {
    		if ( elementList[k].nodeType == 1 ) {
    			var name = elementList[k].nodeName;
    			switch ( name ){
    				case 'objet':						
    					if (elementList[k].textContent = myObjet) {
                                                  flag++;
                                            }
    					break;
    				case 'couleur':
    					if (elementList[k].textContent = myCouleur) {
                                                  flag++;
                                            }
    					break;
    				case 'fournisseur':
    					if (elementList[k].textContent = myFournisseur) {
                                                  flag++;
                                            }
    					break;
    			}
    		}
    		if ( flag == 3 ) {
                            window.open( link,MySelection);
    			break;
    		}
    	}
    }
    N'y a t'il pas une méthode plus simple pour trouver le nœud papeterie qui correspond à mes critères

    Merci de votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 74
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2010
    Messages : 19
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par FlyByck Voir le message
    J'ai une structure XML chargé avec ma page et je voudrais retrouvé les nœuds qui correspondent à mes critères de sélection [...]
    Comment trouver dans mon XML l'objet papeterie correspondant au crayon vert Guilbert
    C'est quoi, xmlMF, et quel est l'objet xmlList qu'il retourne ?
    Je ne les connais pas...

    L'environnement que je connais pour traiter XML en javascript, c'est E4X, norme ECMA-357
    http://www.ecma-international.org/pu...s/Ecma-357.htm.
    (Et il définit un type XMLList, mals qui ne fonctionne pas exactement
    comme dans votre code.)

    Hélas, à ma connaissance, seuls les navigateurs à base Gecko (Firefox & cie)
    le comprennent, ainsi que des environnements propres à Adobe que je ne connais pas.
    Donc, je ne sais pas si ça va vous aider, mais à tout hasard, voici comment ça marche :
    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
     
    // Création d'un objet XML
    var xml =
      <liste>
      <papeterie>
        <objet> Crayon</objet>
        <couleur>rouge</couleur>
        <fournisseur>Guilbert</fournisseur>
      </papeterie>
      <papeterie>
        <objet> Crayon</objet>
        <couleur>vert</couleur>
        <fournisseur>Guilbert</fournisseur>
      </papeterie>
      <papeterie>
        <objet> Crayon</objet>
        <couleur>bleu</couleur>
        <fournisseur>Guilbert</fournisseur>
      </papeterie>
      </liste>
    ;
     
    // extraction de l'ensemble de ses sous-objets papeterie
    // satisfaisant les conditions
    var x = p.papeterie.(objet.* == ' Crayon' &&
      couleur.* == 'vert && fournisseur.* == 'Guilbert');
    La syntaxe un peu bizarre des conditions entre parenthèses qui suivent
    immédiatement un point est l'équivalent des prédicats XPath.

    (Remarquez l'espace initial de ' Crayon', ainsi que le 'C' majuscule.
    J'ai du mal à comprendre pourquoi la structure XML a été définie
    ainsi, mais dès lors que c'est le cas, ils sont nécessaires.)

    L'objet x retourné est une XMLList, avec a priori des éléments x[0],
    x[1], etc, et une fonction x.length() pour dire combien il y en a.
    (Ici il n'y en a qu'un, donc x[1] est undefined.) Remarquez que
    length est une méthode, pas une propriété - il faut l'appeler
    avec des parenthèses derrière, ce n'est pas comme pour un Array.

    Vous pouvez trouver une introduction à E4X plus digeste que la
    norme ECMA ici :
    https://developer.mozilla.org/En/E4X...g_XML_with_E4X

    E4X est très intéressant, je trouve, c'est dommage qu'il soit
    si peu connu. Et c'est une norme internationale ouverte, pas
    une extension propriétaire. Ce serait sympa si d'autres que
    Mozilla l'adoptaient.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2003
    Messages : 115
    Points : 60
    Points
    60
    Par défaut
    Bonjour

    xmlMF est une variable dans lequel je charge le XML reçu de ma httpRequest
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        xmlMF	= result.responseXML;
    Cette variable contient tous le XML, ce n'est pas un objet XML

    La syntaxe proposée ne fonctionne pas. la transformation en objet XML semble avoir des aventages mais si ce n'est pas reconnu par les principaux navigateurs ceci limite son emploi

    Merci

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    result.responseXML
    est un objet DOM XML
    tu peux utiliser XPATH pour récupérer des éléments dedans

    A+JYT

Discussions similaires

  1. Recherche d'un path dans un document XML
    Par rambc dans le forum Général Python
    Réponses: 5
    Dernier message: 02/05/2010, 22h32
  2. [DOM] Créer Element dans un document XML
    Par nivose110 dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/06/2006, 09h18
  3. Sauver un TStream dans un document XML
    Par srvremi dans le forum Composants VCL
    Réponses: 4
    Dernier message: 07/10/2004, 13h17
  4. recherche dans un document xml via DOM
    Par ndoye_zaff dans le forum APIs
    Réponses: 5
    Dernier message: 11/06/2003, 14h44
  5. Stocker du texte mis en forme dans un document XML
    Par ovh dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 13/02/2003, 10h23

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