[php]Odczytanie pliku xml oraz pętla forach

Odpowiedz Nowy wątek
2007-06-17 11:54
0

Witam,

W celu wykorzystania/odczytania plików xml stosuję funkcję

simplexml_load_file()

następnie aby wyczytać elementy- ich właściwości używam

$xml = simplexml_load_file('config.xml');
foreach($xml->margin->attributes() as $a => $b){
  $glb[$a] = $b;

Wysztko działa bez problemu. W momencie kiedy chcę odczytać wartości z pozostałych pól pojawia się problem. Najpierw pokażę strukturę pliku xml:

<conf>
 <margin size='50'/>
 <css fold="./css/"/>
 <struct>
  <klucz>
   <podklucz> wartosc </podklucz>
   ...
   <podklucz_n> wartosc </podklucz_n>
  </klucz>
 <struct>
</conf>

Część wewnątrz <struct> czyli <klucz> pojawia się pewną ilość razy zamieniając przy tym nazwę(<klucz_xyz>).
Moje pytanie polega na: korzystam z pętli:

foreach($xml->struct->logo as $node){
    echo "$node->rows";
    echo "$node->cols";
    echo "$node->row";
    echo "$node->col";
    echo "$node->addr";
    echo "$node->css";
}

Lecz jak widać jest ona trochę dziwna(już nawet nie wspomnę o foreach dla jednej pętni).
W jaki sposób powinienen zmodyfikować pętle aby za jednym razem mógłbym wyczytać wszystkie wartości podkluczy kluczy zawartych w struct?

Pozostało 580 znaków

2007-06-18 16:35
0

Narazie mam taki kod do listowania kluczy, wydaje mi się w miarę poprawny, lecz niestety wykrzacza parser php(wysyłaj/nie wysyłaj na xp):

foreach($xml->struct as $keys) {
    foreach($xml->struct->$keys as $node) {
        $glb[$keys]['rows']     = $node->rows;  
        $glb[$keys]['cols']     = $node->cols;
            $glb[$keys]['col']  = $node->col;
        $glb[$keys]['row']  = $node->row;
        $glb[$keys]['addr']     = $node->addr;
        $glb[$keys]['css']  = $node->css;
    }
}

Pozostało 580 znaków

2007-06-18 19:45
0

nie wiem co za "logo", "rows", "cols" itp no ale chyba $keys a nie $xml->struct->$keys


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2007-06-18 20:00
0

logo to klucz, rows itp to są podklucze

sama zamiana $xml->struct na forach($keys) nic nie daje, albo ja poprostu źle wartości wyciągam :(

dopisane
Ogólnie to foreach($xml->struct as $keys){ echo $keys; } nic nie wyświetla...

Pozostało 580 znaków

2007-06-18 20:18
0

to jeszcze foreach $xml -> struct na get_object_vars($xml -> struct)


Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2007-06-18 20:22
0

czyli

foreach(get_object_vars($xml -> struct) as $keys){
  echo $keys;
}

nie działa :-/

Pozostało 580 znaków

2007-06-18 20:28
0

bo $keys to wtedy object zawierający podklucze, jak chcesz jego nazwę to:

foreach(get_object_vars($xml -> struct) as $nazwa => $key){
  echo $nazwa;
}

albo

foreach($xml -> struct[0] as $nazwa => $key){
  echo $nazwa;
}

Dwie zasady gwarantujące sukces:
1. Nigdy nie mów nikomu wszystkiego<span style="color: white">

Pozostało 580 znaków

2007-06-18 20:31
0

Dzięki! Ruszyło :-)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0