Avatar billede Hans1 Praktikant
22. juni 2012 - 18:57 Der er 10 kommentarer og
1 løsning

XML importering

Kunne godt bruge lidt hjælp til importering af en xml fil i PHP.
Jeg er kommet lidt videre ved at bruge en foreach men desværre så udskriver den kun første række/resultat af XML filen den udskriver ikke alle. Jeg tror at det kan have noget at gøre med at det ikke er et array. Den skulle desuden også laves om så jeg kunne udskrive en enkelt kolonne i stedet for alle kolonner i hver række ved hjælp af det ene echo.


$url = 'file.xml';
$sxml = simplexml_load_file($url);

foreach($sxml->Departure->attributes() as $item)
{
    echo $item;
}
Avatar billede olsensweb.dk Ekspert
22. juni 2012 - 19:14 #1
er det en forsættelse af dette spm http://www.eksperten.dk/spm/959492 ??
hvordan ser din xml fil ud ??
Avatar billede olebole Juniormester
22. juni 2012 - 19:16 #2
<ole>

Jeg er ikke helt sikker på, hvad det er, du vil. Umiddelbart ser det ud til, at du bladrer igennem attributterne på et første Departure element i dokumentet. Er det, hvad du vil?

PS: Der er ikke kolonner og rækker i XML, så du må nok være lidt mere præcis  =)

/mvh
</bole>
Avatar billede Hans1 Praktikant
22. juni 2012 - 19:27 #3
@ronols nej dette er ikke en html fil.

Der er tale om et SimpleXMLElement Object, det ser således ud:

Umiddelbart ser det ud til, at du bladrer igennem attributterne på et første Departure element i dokumentet.
Jeg tror at det var den formulering jeg ledte efter =)


SimpleXMLElement
Object ( [Departure] => Array ( [0] => SimpleXMLElement
Object ( [@attributes] => Array ( [name] => name1 [type] => type1)
[JourneyDetailRef] => SimpleXMLElement Object ( [@attributes] => Array ( [ref] => url1 ) ) )

Og sådan fortsætter filen ellers bare med et nyt array og andre værdier...
Avatar billede olebole Juniormester
22. juni 2012 - 19:49 #4
- og hvad er det så, du vil echo'e? Kun attributterne på det første element, eller?
Avatar billede Hans1 Praktikant
22. juni 2012 - 20:09 #5
Hov nej, alle elementer i hele xml filen.
I selve foreachen skal jeg så kunne vælge kun at udskrive fx. name med $item->name ligesom i mysql hvor man kan udskrive en enkelt kolonne via $row["name"]. På den måde.
Avatar billede olebole Juniormester
22. juni 2012 - 20:24 #6
Det bedste, jeg kan sige er: Du skal bare gøre det rigtige  =)

#1: "hvordan ser din xml fil ud ??"

- og så ved jeg stadig ikke, hvad du præcist vil. Jeg gider ikke sidde og skrive noget, du ikke har brug for. Forklar præcist, hvad du skal bruge  =)
Avatar billede Hans1 Praktikant
22. juni 2012 - 20:37 #7

$url = 'file.xml';
$sxml = simplexml_load_file($url);

foreach($sxml->Departure as $item){

    foreach($item->attributes() as $key => $piece){
        echo $key.' = '.$piece;
    }
}


Følgende kode giver mig:
name = name1
type = type1

name = name2
type = type2

osv.


Problemer er at den udskriver alle værdier. Hvordan  udskriver jeg fx kun værdien for name?
Avatar billede olebole Juniormester
22. juni 2012 - 20:53 #8
Er det sådan noget, du søger:

$sAttr = 'name';
foreach($sxml->Departure as $item){
    echo $item->attributes()->$sAttr.'<br>';
}
Avatar billede olebole Juniormester
22. juni 2012 - 20:57 #9
- og mon ikke også dette udskriver name:

foreach($sxml->Departure as $item){
    echo $item['name'].'<br>';
}
Avatar billede Hans1 Praktikant
22. juni 2012 - 21:12 #10
#9 Yes! Tak Ole =)
Avatar billede Hans1 Praktikant
27. juni 2012 - 17:31 #11
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester