Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 945
Hei!
Jeg trenger å hente ut diverse data fra en ekstern XML-fil, men har støtt på en del problemer. Bruker PHP. Jeg ønsker å få det som er merket med rødt og grønt inn i 3 egne variabler, slik at jeg kan bruke disse dataene videre. Dette må vel kjøres i en løkke, siden det er mange forskjellige <item> i XML-fila mi (flere enn i eksempelet også).

Så langt har jeg enten fått hentet ut kun det som er markert med rødt eller kun det grønne, og i tillegg sliter jeg med løkka.

Her er eksempelkode:

Kode

<items>
<item a="Dette vil jeg ikke ha" b="[COLOR="Red"]Dette vil jeg ha[/COLOR]" c="[COLOR="Red"]Dette også[/COLOR]" d="Men ikke dette">
<media image="http://eksempel.no/bilde1.jpg">[COLOR="Green"]http://eksempel.no/film1.mov[/COLOR]</media>
<roll>Mens denne teksten trenger jeg ikke</roll>
</item>

<item a="Dette vil jeg ikke ha nå heller" b="[COLOR="Red"]Men fortsatt dette[/COLOR]" c="[COLOR="Red"]Og dette[/COLOR]" d="Men ikke dette">
<media image="http://eksempel.no/bilde2.jpg">[COLOR="Green"]http://eksempel.no/film2.mov[/COLOR]</media>
<roll>Mens denne teksten trenger jeg ikke nå heller</roll>
</item>
</items>
Dette var litt vanskelig å forklare, men håper dere skjønner det.
Sist endret av zorro; 3. juli 2012 kl. 12:40.
Sur og sarkastisk
droppboks's Avatar
Les om SimpleXML, funket for meg da jeg eksperimenterte med XML, finn en guide og slå deg løs.
zorro's Avatar
Trådstarter
Sitat av Choobe Vis innlegg
Les om SimpleXML, funket for meg da jeg eksperimenterte med XML, finn en guide og slå deg løs.
Vis hele sitatet...
Det er dette jeg har lest om, men allikevel ikke helt har fått til. Det jeg sliter med er å hente ut data som er lagret som en verdi inni en tag (markert med rødt i førsteposten), samtidig som jeg også skal hente ut data som er lagret mellom en start- og sluttag (markert med grønt). I tillegg blir foreach-en jeg prøver å lage over mitt nivå. Blir det en løkke med en ny løkke i seg?
Jeg ville begynt med dette eksempelet: http://www.php.net/manual/en/simplex...ples-basic.php
zorro's Avatar
Trådstarter
Sitat av nudo Vis innlegg
Jeg ville begynt med dette eksempelet: http://www.php.net/manual/en/simplex...ples-basic.php
Vis hele sitatet...
Takk for lenken! Jeg lærte egentlig veldig mye av de eksemplene (fikk brukt noe av det et annet sted i koden!), men må dessverre meddele at jeg fortsatt ikke har fått til dette. Begynner å bli skrekkelig irritert nå over å ikke få det til, så tror jeg bør legge dette prosjektet på is en stund.
Nå er det lenge siden jeg har kodet noe i PHP, men dette bør da fungere:

Kode

foreach ($items->item as $item) {
	echo $item['b']
	echo $item['c']
	echo $item->media
}
zorro's Avatar
Trådstarter
Tusen takk, helt supert!
Der lærte jeg en del ting som jeg tror jeg kommer til å ha nytte av videre. Men selv om jeg bare er en hobbykoder, vil jeg veldig gjerne forstå hva som skjer i koder jeg bruker. Kan noen lese gjennom og kommentere om dette er en riktig beskrivelse av hva som skjer i koden?

Kode

foreach ($items->item as $item) {
// items er tagen som omslutter all data i dokumentet.
// Ved å bruke -> går man på en måte et hakk lenger ned,
// altså til en ny tag som står inni <items>. I dette tilfellet
// er det <item>-tagen. Og foreach-løkka kjører helt
// til det ikke er flere <item>-tager igjen i XML-fila.

	echo $item['b'];
	echo $item['c'];
// $item antar jeg er et array som inneholder attributnavnet
// som array-key og verdien som array-value, jf. attribut="verdi" i <item>-tag.
// Ved å skrive ['navn på attribut'] henter arrayet ut den tilhørende verdien.

	echo $item->media;
// på samme måte som $items->item, går man nå enda et "hakk"
// videre ned. Og siden $items->item ble satt til $item lengre opp,
// er kanskje $item->media det samme som $items->item->media?
}
Men jeg sliter fortsatt litt med å skjønne hvorfor $item['b'] henter ut <tag navn="XXXX">, mens $item->media henter ut <tag>XXXX</tag>. Vil $item->media['image'] for eksempel hente ut den bildelinken i grønn skrift i førsteposten min?

Til andre som eventuelt skulle trenge koden til steinarlima, så er det greit å legge merke til at semikolonene etter echo er blitt glemt i farten. Liten slurvefeil, men viktig for resultatet!
Sist endret av zorro; 4. juli 2012 kl. 01:18.
Prøv

Kode

print_r( $item );
et sted i koden din, også gå på Vis kode i nettlesern din etterpå, da skal du få opp et ganske oversiktlig tre, jeg vet ikke om det finnes noe lignendes til objekt eller hva den -> greia er for noe.