Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML+PHP] Wyciągnięcie danych
przemek_el
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 1
Dołączył: 17.12.2007

Ostrzeżenie: (0%)
-----


Witam.

z pliku o strukturze:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <katalog data="2009-08-10 10:00">
  3. <GrupyTowarowe>
  4. <GrupaGlowna id="MAT" nazwa="_Materiały reklamowe">
  5. <PodGrupy>
  6. <PodGrupa id="MAT-REK" nazwa="Materiały reklamowe" />
  7. </PodGrupy>
  8. </GrupaGlowna>
  9. <GrupaGlowna id="AGD" nazwa="AGD - Produkty">
  10. <PodGrupy>
  11. <PodGrupa id="AGD-CHL" nazwa="Automaty do pieczenia chleba" />
  12. <PodGrupa id="AGD-POP" nazwa="Automaty do popcornu" />
  13. <PodGrupa id="AGD-LDW" nazwa="Chłodziarki do wina" />
  14. <PodGrupa id="AGD-LOZ" nazwa="Chłodziarko-zamrażarki do zabudowy (lodówki)" />
  15. </PodGrupy>
  16. </GrupaGlowna>
  17. <GrupaGlowna id="AKC" nazwa="Akcesoria komputerowe">
  18. <PodGrupy>
  19. <PodGrupa id="AKC-ADA" nazwa="Adaptery, przejściówki" />
  20. <PodGrupa id="AKC-ABK" nazwa="Akcesoria biurowo - komputerowe" />
  21. <PodGrupa id="AKC-USB" nazwa="Obudowy na HDD i ODD (USB,FireWire,eSATA…)" />
  22. </PodGrupy>
  23. </GrupaGlowna>
  24. </GrupyTowarowe>
  25. </katalog>


potrzebuję wyciągnąć dane tzn id grupy, nazwę grupy i id_podgrupy oraz nazwę podgrupy. Próbowałem przez SimpleXML kodem:

  1. $xml = simplexml_load_file('Plik.xml'); //Ładowanie pliku XML
  2.  
  3. $liczba_grup=count($xml->GrupyTowarowe->GrupaGlowna);
  4. echo "<Br>Liczba grup:$liczba_grup<br>";
  5. for( $z = 0; $z < $liczba_grup; $z++ )
  6. {
  7. $liczba_pod_grup=count($xml->GrupyTowarowe->GrupaGlowna[$z]);
  8. for( $y = 0; $y < $liczba_pod_grup; $y++ )
  9. {
  10. foreach($xml->GrupyTowarowe->GrupaGlowna[$z]->PodGrupy->PodGrupa[$y]->attributes() as $a => $b)
  11. {
  12. if ($a=='id'){$produkt_id=$b;}
  13. if ($a=='nazwa'){$nazwa=$b;}
  14. echo "$produkt_id;$nazwa<br>";
  15. }
  16.  
  17. }
  18. }

i wyświetlają mi się tylko pierwsze podkategorie. proszę o pomoc winksmiley.jpg
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
i wyświetlają mi się tylko pierwsze podkategorie

Tzn?


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
Ruda Grażyna
post
Post #3





Grupa: Zarejestrowani
Postów: 23
Pomógł: 0
Dołączył: 3.02.2009
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Myślę że to powinno pomóc DOMdocument
powodzonka rolleyes.gif
Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Ściągnij sobie http://code.google.com/p/phpquery/ i nie męcz się z gołym DOM.


--------------------
Go to the top of the page
+Quote Post
adrian.p
post
Post #5





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 27.03.2009

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. $xml = simplexml_load_file('Plik.xml'); //Ładowanie pliku XML
  4.  
  5. $iCountMain = count($xml->GrupyTowarowe[1]);
  6.  
  7. foreach( $xml->GrupyTowarowe[0] as $k_m => $v_m ) {
  8. echo $v_m['nazwa'].'<br />';
  9.  
  10. foreach( $v_m->PodGrupy[0] as $k_i => $v_i ) {
  11. echo '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'.$v_m['nazwa']. ' - ' .$v_i['nazwa'].'<br />';
  12. }
  13. }
  14. ?>


Cos takiego?
Go to the top of the page
+Quote Post
Pawel_W
post
Post #6





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

Ostrzeżenie: (0%)
-----


  1. print_r($xml->GrupyTowarowe->GrupaGlowna->PodGrupy->PodGrupa);

tutaj masz wzór, wrzuć to do foreach i będziesz miał
Go to the top of the page
+Quote Post
gcdreak
post
Post #7





Grupa: Zarejestrowani
Postów: 365
Pomógł: 8
Dołączył: 16.12.2008

Ostrzeżenie: (0%)
-----


Oto rozwiązanie:
  1. $dom = new DOMDocument();
  2. $dom->loadXML($str);
  3.  
  4. $katalog = $dom->documentElement;
  5.  
  6. $grGl = $katalog->getElementsByTagName('GrupaGlowna');
  7. $podgrupy = $dom->getElementsByTagName('PodGrupa');
  8.  
  9. foreach($grGl as $gG):
  10. echo $gG->getAttribute('id').' ----- '.$gG->getAttribute('nazwa') . '<br />';
  11. foreach($podgrupy as $podgrupa):
  12. echo str_repeat('&nbsp;',10).'|--->'.$podgrupa->getAttribute('id'). '-----' .$podgrupa->getAttribute('nazwa'). '<br />';
  13. endforeach;
  14. endforeach;
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 19:52