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

Bibliothèques et frameworks PHP Discussion :

[DOM XML] Recherche d'éléments dans des balises imbriquées


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 45
    Points
    45
    Par défaut [DOM XML] Recherche d'éléments dans des balises imbriquées
    Bonjour je récupère le XML suivant d'un webservice suite aux commandes passées dans ma boutique.

    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
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
     
    <ns1:Order OrderID="1-2012.115.0713702" OrderDate="2012-04-24T13:17:42+02:00" CurrencyCode="EUR">
    <ns1:OrderLine OrderLineID="2229-1-2012.115.0713702-7" StatusCode="Accepted" StatusDate="2012-04-25T15:16:58.748+02:00">
    <ns1:Item ItemRedouteID="0WPMP7GH" ItemStandardID="">
    <ns1:Offer OfferID="13944147" SellerOfferID="8999">
    <ns1:InitialSellingPrice>3.8E1</ns1:InitialSellingPrice>
    <ns1:DiscountedSellingPrice>3.8E1</ns1:DiscountedSellingPrice>			<ns1:WEEEFee>0.0E0</ns1:WEEEFee>							<ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    <ns1:DeliveryFee>5.0E0</ns1:DeliveryFee>
    <ns1:DeliveryInstruction>TEL AVANT CERET POUR QUE LA CLIENTE INDIQUE LE CHEMIN</ns1:DeliveryInstruction>
    <ns1:DeliveryAddress>										<ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode>66400</ns1:ZIPCode>
    <ns1:City>TAILLET</ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>						</ns1:DeliveryAddress>
    </ns1:Delivery>
    </ns1:Offer>	
    </ns1:Item>
    <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    <ns1:CreationLog CreationDate="2012-04-24T13:17:46.136+02:00"/>
    <ns1:UpdateLog UpdateDate="2012-04-25T15:16:58.748+02:00"/>
    </ns1:OrderLine>
    <ns1:BillingAddress>
    <ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode> </ns1:ZIPCode>
    <ns1:City> </ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>
    </ns1:BillingAddress>
    <ns1:ReceiverCustomer CustomerID="1-173181841"/>
    </ns1:Order>
    <ns1:Order OrderID="1-2012.115.0824598" OrderDate="2012-04-24T17:26:56+02:00" CurrencyCode="EUR">
    <ns1:OrderLine OrderLineID="2229-1-2012.115.0824598-5" StatusCode="Accepted" StatusDate="2012-04-25T15:17:20.873+02:00">
    <ns1:Item ItemRedouteID="0WPMPYPN" ItemStandardID="">
    <ns1:Offer OfferID="14009275" SellerOfferID="9614">
    <ns1:InitialSellingPrice>2.28E2</ns1:InitialSellingPrice>
    <ns1:DiscountedSellingPrice>2.28E2</ns1:DiscountedSellingPrice>
    <ns1:WEEEFee>0.0E0</ns1:WEEEFee>
    <ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    <ns1:DeliveryFee>0.0E0</ns1:DeliveryFee>
    <ns1:DeliveryAddress>
    <ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode>59100</ns1:ZIPCode>
    <ns1:City>ROUBAIX</ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>						</ns1:DeliveryAddress>
    </ns1:Delivery>
    </ns1:Offer>
    </ns1:Item>
    <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    <ns1:CreationLog CreationDate="2012-04-24T17:26:58.041+02:00"/>
    <ns1:UpdateLog UpdateDate="2012-04-25T15:17:20.873+02:00"/>
    </ns1:OrderLine>
    <ns1:BillingAddress>
    <ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode> </ns1:ZIPCode>
    <ns1:City> </ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>
    </ns1:BillingAddress>
    <ns1:ReceiverCustomer CustomerID="1-608988424"/>
    </ns1:Order>
    <ns1:Order OrderID="1-2012.115.0765303" OrderDate="2012-04-24T15:33:17+02:00" CurrencyCode="EUR">
    <ns1:OrderLine OrderLineID="2229-1-2012.115.0765303-1" StatusCode="Accepted" StatusDate="2012-04-25T15:17:42.209+02:00">
    <ns1:Item ItemRedouteID="0WPMP6JF" ItemStandardID="">
    <ns1:Offer OfferID="13943893" SellerOfferID="3492">
    <ns1:InitialSellingPrice>3.9E1</ns1:InitialSellingPrice>
    <ns1:DiscountedSellingPrice>3.9E1</ns1:DiscountedSellingPrice>
    <ns1:WEEEFee>0.0E0</ns1:WEEEFee>
    <ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    <ns1:DeliveryFee>5.0E0</ns1:DeliveryFee>
    <ns1:DeliveryAddress>
    <ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode>03100</ns1:ZIPCode>
    <ns1:City>MONTLUCON</ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>
    </ns1:DeliveryAddress>
    </ns1:Delivery>
    </ns1:Offer>
    </ns1:Item>
    <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    <ns1:CreationLog CreationDate="2012-04-24T15:33:19.823+02:00"/>
    <ns1:UpdateLog UpdateDate="2012-04-25T15:17:42.209+02:00"/>
    </ns1:OrderLine>
    <ns1:BillingAddress>
    <ns1:Name1> </ns1:Name1>
    <ns1:Address1> </ns1:Address1>
    <ns1:ZIPCode> </ns1:ZIPCode>
    <ns1:City> </ns1:City>
    <ns1:CountryCode>FR</ns1:CountryCode>
    </ns1:BillingAddress>
    <ns1:ReceiverCustomer CustomerID="1-591386271"/>
    </ns1:Order>
    Je souhaite récupérer toutes les valeurs de la balise <ns1:ZIPCode></ns1:ZIPCode> imbriquée dans la balise <ns1: DeliveryAddress>

    Voici ce que j'ai tenté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $delivery = $dom->getElementsByTagName('DeliveryAddress')->item(0);
    $zipcode = $delivery->getElementsByTagName('ZIPCode');
    foreach($zipcode as $cp)
    echo "Code Postal: " .$cp->firstChild->nodeValue . "<br />";
    Malheureusement je ne récupère que le premier Zipcode (66400)
    Comme vous l'avez compris, je les voudrais tous.

    Aucun de vous n'aurez une idée?

    Merci d'avance pour votre compréhension et votre aide.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Vu qu'un tag DeliveryAddress ne contiens qu'un ZipCode, ça parait logique...

    Mets de l'ordre dans ton XML tu y verra plus clair:
    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
    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    	<ns1:Order OrderID="1-2012.115.0713702" OrderDate="2012-04-24T13:17:42+02:00" CurrencyCode="EUR">
    	    <ns1:OrderLine OrderLineID="2229-1-2012.115.0713702-7" StatusCode="Accepted" StatusDate="2012-04-25T15:16:58.748+02:00">
    	        <ns1:Item ItemRedouteID="0WPMP7GH" ItemStandardID="">
    	            <ns1:Offer OfferID="13944147" SellerOfferID="8999">
    	                <ns1:InitialSellingPrice>3.8E1</ns1:InitialSellingPrice>
    	                <ns1:DiscountedSellingPrice>3.8E1</ns1:DiscountedSellingPrice>
    	                <ns1:WEEEFee>0.0E0</ns1:WEEEFee>
    	                <ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    	                    <ns1:DeliveryFee>5.0E0</ns1:DeliveryFee>
    	                    <ns1:DeliveryInstruction>TEL AVANT CERET POUR QUE LA CLIENTE
    	                        INDIQUE LE CHEMIN</ns1:DeliveryInstruction>
    	                    <ns1:DeliveryAddress>
    	                        <ns1:Name1>
    	                        </ns1:Name1>
    	                        <ns1:Address1>
    	                        </ns1:Address1>
    	                        <ns1:ZIPCode>66400</ns1:ZIPCode>
    	                        <ns1:City>TAILLET</ns1:City>
    	                        <ns1:CountryCode>FR</ns1:CountryCode>
    	                    </ns1:DeliveryAddress>
    	                </ns1:Delivery>
    	            </ns1:Offer>
    	        </ns1:Item>
    	        <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    	        <ns1:CreationLog CreationDate="2012-04-24T13:17:46.136+02:00" />
    	        <ns1:UpdateLog UpdateDate="2012-04-25T15:16:58.748+02:00" />
    	    </ns1:OrderLine>
    	    <ns1:BillingAddress>
    	        <ns1:Name1>
    	        </ns1:Name1>
    	        <ns1:Address1>
    	        </ns1:Address1>
    	        <ns1:ZIPCode>
    	        </ns1:ZIPCode>
    	        <ns1:City>
    	        </ns1:City>
    	        <ns1:CountryCode>FR</ns1:CountryCode>
    	    </ns1:BillingAddress>
    	    <ns1:ReceiverCustomer CustomerID="1-173181841" />
    	</ns1:Order>
    	<ns1:Order OrderID="1-2012.115.0824598" OrderDate="2012-04-24T17:26:56+02:00" CurrencyCode="EUR">
    	    <ns1:OrderLine OrderLineID="2229-1-2012.115.0824598-5" StatusCode="Accepted" StatusDate="2012-04-25T15:17:20.873+02:00">
    	        <ns1:Item ItemRedouteID="0WPMPYPN" ItemStandardID="">
    	            <ns1:Offer OfferID="14009275" SellerOfferID="9614">
    	                <ns1:InitialSellingPrice>2.28E2</ns1:InitialSellingPrice>
    	                <ns1:DiscountedSellingPrice>2.28E2</ns1:DiscountedSellingPrice>
    	                <ns1:WEEEFee>0.0E0</ns1:WEEEFee>
    	                <ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    	                    <ns1:DeliveryFee>0.0E0</ns1:DeliveryFee>
    	                    <ns1:DeliveryAddress>
    	                        <ns1:Name1>
    	                        </ns1:Name1>
    	                        <ns1:Address1>
    	                        </ns1:Address1>
    	                        <ns1:ZIPCode>59100</ns1:ZIPCode>
    	                        <ns1:City>ROUBAIX</ns1:City>
    	                        <ns1:CountryCode>FR</ns1:CountryCode>
    	                    </ns1:DeliveryAddress>
    	                </ns1:Delivery>
    	            </ns1:Offer>
    	        </ns1:Item>
    	        <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    	        <ns1:CreationLog CreationDate="2012-04-24T17:26:58.041+02:00" />
    	        <ns1:UpdateLog UpdateDate="2012-04-25T15:17:20.873+02:00" />
    	    </ns1:OrderLine>
    	    <ns1:BillingAddress>
    	        <ns1:Name1>
    	        </ns1:Name1>
    	        <ns1:Address1>
    	        </ns1:Address1>
    	        <ns1:ZIPCode>
    	        </ns1:ZIPCode>
    	        <ns1:City>
    	        </ns1:City>
    	        <ns1:CountryCode>FR</ns1:CountryCode>
    	    </ns1:BillingAddress>
    	    <ns1:ReceiverCustomer CustomerID="1-608988424" />
    	</ns1:Order>
    	<ns1:Order OrderID="1-2012.115.0765303" OrderDate="2012-04-24T15:33:17+02:00" CurrencyCode="EUR">
    	    <ns1:OrderLine OrderLineID="2229-1-2012.115.0765303-1" StatusCode="Accepted" StatusDate="2012-04-25T15:17:42.209+02:00">
    	        <ns1:Item ItemRedouteID="0WPMP6JF" ItemStandardID="">
    	            <ns1:Offer OfferID="13943893" SellerOfferID="3492">
    	                <ns1:InitialSellingPrice>3.9E1</ns1:InitialSellingPrice>
    	                <ns1:DiscountedSellingPrice>3.9E1</ns1:DiscountedSellingPrice>
    	                <ns1:WEEEFee>0.0E0</ns1:WEEEFee>
    	                <ns1:Delivery DeliveryMode="Home" DeliveryType="Regular">
    	                    <ns1:DeliveryFee>5.0E0</ns1:DeliveryFee>
    	                    <ns1:DeliveryAddress>
    	                        <ns1:Name1>
    	                        </ns1:Name1>
    	                        <ns1:Address1>
    	                        </ns1:Address1>
    	                        <ns1:ZIPCode>03100</ns1:ZIPCode>
    	                        <ns1:City>MONTLUCON</ns1:City>
    	                        <ns1:CountryCode>FR</ns1:CountryCode>
    	                    </ns1:DeliveryAddress>
    	                </ns1:Delivery>
    	            </ns1:Offer>
    	        </ns1:Item>
    	        <ns1:Quantity QuantityQualifier="1" MeasureUnit="H87">1.0E0</ns1:Quantity>
    	        <ns1:CreationLog CreationDate="2012-04-24T15:33:19.823+02:00" />
    	        <ns1:UpdateLog UpdateDate="2012-04-25T15:17:42.209+02:00" />
    	    </ns1:OrderLine>
    	    <ns1:BillingAddress>
    	        <ns1:Name1>
    	        </ns1:Name1>
    	        <ns1:Address1>
    	        </ns1:Address1>
    	        <ns1:ZIPCode>
    	        </ns1:ZIPCode>
    	        <ns1:City>
    	        </ns1:City>
    	        <ns1:CountryCode>FR</ns1:CountryCode>
    	    </ns1:BillingAddress>
    	    <ns1:ReceiverCustomer CustomerID="1-591386271" />
    	</ns1:Order>
    </root>
    Si tu veux tous les ZipCode fils de DeliveryAddress, tu imbriques les boucles et voilà tout.
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ($dom->getElementsByTagName('DeliveryAddress') as $delivery) {
      foreach ($delivery->getElementsByTagName('ZIPCode') as $zip) {
         echo "Code Postal: " .$zip->firstChild->nodeValue . "<br />";
      }
    }

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 104
    Points : 45
    Points
    45
    Par défaut
    Merci beaucoup Benjamin Delespierre.

    Tu viens de sauver ma journée!!!

    Merci encore

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

Discussions similaires

  1. Code HTML dans des balises XML
    Par Abac_Angelique dans le forum XML/XSL et SOAP
    Réponses: 4
    Dernier message: 11/04/2009, 14h11
  2. Réponses: 1
    Dernier message: 08/01/2009, 11h34
  3. [DOM] Injection de données dans des balises exotiques
    Par javapalatete dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/10/2008, 11h52
  4. Problème de recherche dans des balises XML
    Par mbhfr06 dans le forum Langage
    Réponses: 2
    Dernier message: 26/08/2007, 12h26
  5. [DOM] Création de lien dans des balise en place
    Par Super_baloo8 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 20/04/2007, 11h54

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