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

Eléphanteau du PHP | 38 Messages

15 mai 2012, 12:00

Bonjour je récupère le XML suivant d'un webservice suite aux commandes passées dans ma boutique.

[xml]
<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>
[/xml]

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é
$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.
Nats