[php]Odczytanie pliku xml oraz pętla forach

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?

0

na razie 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;
	}
}
0

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

0

logo to klucz, rows itp to są podklucze

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

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

0

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

0

czyli

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

nie działa :-/

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;
}
0

Dzięki! Ruszyło :-)

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