PHP: Problem att hämta data från XML

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Boden
  • 2011-08-03 19:55

Hej. Denna kodsnutt hämtar all information förutom "price-sek" från en XML och lägger i en array.

foreach($xml->car as $car)
{
        $acar = array(
            '/images/image[1]' => $car->image, 
            'yearmodel' => $car->yearmodel, 
            'miles' => $car->miles, 
           'price-sek' => $car->price-sek, 
            'model' => $car->model, 
        );
        $cararray[] = $acar;
}

Här är XML koden:

<cars>
<car>

<brand>Audi</brand>

<model>100</model>

<yearmodel>1994</yearmodel>

<miles>34100</miles>

<price-sek>14.900</price-sek>

<images>

<image>(länk till bild 1)</image>
<image>(länk till bild 2)</image>

</images>

</car>
</cars>

Vad som skiljer price-sek från de övriga är att där är en punkt. Kan det vara så att punkten ställer till det (låter väldigt osannolikt)?

Vill passa på att ställa ännu en fråga.

'/images/image[1]' => $car->image,

Detta funkar inte heller. Enligt xPath formatering ska väl /images/image[1] hämta första "image" under "images"? Vad kan jag ha missat här.

Väldigt tacksam för hjälp.

MVH Jens

  • Medlem
  • Boden
  • 2011-08-03 20:25

Upptäckte nu att jag gjort det pinsamma misstaget att förväxla indexnamnet med vad som ska hämtas.

'/images/image[1]' => $car->image, ska vara 'image' => $car->images->image[1], . Nu funkar bilden.

Jag har en teori varför price-sek inte funkar. Kan det bero på att $car->price-sek, innehåller ett streck? Hur kommer jag runt detta problemet?

Bra att det funkade. Hade inte möjlighet att testa själv.

Ursprungligen av jensm:

...Jag har en teori varför price-sek inte funkar. Kan det bero på att $car->price-sek, innehåller ett streck?...

Strecket tolkas som minustecken om man inte kapslar in det. Kolla t.ex. här: PHP: Basic SimpleXML usage - Manual

Prova med

$car->{'price-sek'}

  • Medlem
  • Boden
  • 2011-08-03 23:09

Tack det funkade!

1
Bevaka tråden