Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][XML][PHP]Utworzenie struktury XML-a
mirkus
post
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.12.2009

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


Witam mam taki problem chciałbym utworzyć strukturę i zapisać ją w xml-u:
Pomyślałem sobie coś takiego:
- będą 2 tablica w jednej bedę przechowywał zmienne a w drugiej powiązania,

- tablica przechowująca zmienne:
  1. tab1[1]="sql";
  2. tab1[2]="postgree";
  3. tab1[3]="oracle";
  4. tab1[4]="linux";
  5. tab1[5]="solaris";
  6. tab1[6]="windows";
  7. tab1[7]="windosxp";
  8. tab1[8]="windows7";


- tablica przechowująca powiązania zmiennych (pierwsza kolumna jest rodzicem, druga potomkiem):
  1. tab2[0][0]=1; tab2[0][1]=2;
  2. tab2[1][0]=1; tab2[1][1]=3;
  3. tab2[2][0]=2; tab2[2][1]=4;
  4. tab2[3][0]=3; tab2[3][1]=5;
  5. tab2[4][0]=3; tab2[4][1]=7;
  6. tab2[5][0]=7; tab2[5][1]=8;
  7. tab2[6][0]=7; tab2[6][1]=9;



w efekcie chcialbym wygenerowac plik xml majacy strukturą:
  1. <sql>
  2. <postgree>
  3. <linux>
  4. </linux>
  5. </postgree>
  6. <oracle>
  7. <solaris>
  8. </solaris>
  9. <windows>
  10. <windowsxp>
  11. </windowsxp>
  12. <windows7>
  13. </windows7>
  14. </windows>
  15. </oracle>
  16. </sql>


czy ktoś może miał z takim problemem do czynienia, a może jest inny łatwiejszy sposób.
Z góry dzięki za pomocne podpowiedzi (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Pawel_W
post
Post #2





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

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


DOM
Go to the top of the page
+Quote Post
mirkus
post
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.12.2009

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


Dzięki za wskazanie ścieżki postępowania (IMG:style_emoticons/default/smile.gif)

wykombinowałem coś takiego: tabele są przykładowe:
$tablica[0]="aaa"; - korzen
$tablica[1]="glowny1"; - potomek korzenia
$tablica[2]="potomek1"; - potomek wezla glowny1
$tablica[3]="potomek2"; - potomek wezla glowny1
$tablica[4]="potomek3"; - potomek wezla glowny2
$tablica[5]="glowny2"; - potomek korzenia

tabela z zależnościami:(kolumna 0 - rodzic, potomek- kolumna1)
$pow[0][0]=0; $pow[0][1]=1;
$pow[1][0]=0; $pow[1][1]=5;
$pow[2][0]=1; $pow[2][1]=2;
$pow[3][0]=1; $pow[3][1]=3;
$pow[4][0]=5; $pow[4][1]=4;

  1. <?php
  2. $tablica[0]="aaa";
  3. $tablica[1]="glowny1";
  4. $tablica[2]="potomek1";
  5. $tablica[3]="potomek2";
  6. $tablica[4]="potomek3";
  7. $tablica[5]="glowny2";
  8.  
  9. $pow[0][0]=0; $pow[0][1]=1;
  10. $pow[1][0]=0; $pow[1][1]=5;
  11. $pow[2][0]=1; $pow[2][1]=2;
  12. $pow[3][0]=1; $pow[3][1]=3;
  13. $pow[4][0]=5; $pow[4][1]=4;
  14.  
  15. $dom = new DOMDocument('1.0', 'iso-8859-1');
  16. $dom->formatOutput = true;
  17.  
  18. $yyy = $dom->createElement($tablica[0], 'jestem glownym elementem');
  19. $dom->appendChild($yyy);
  20.  
  21. for($j=0;$j<count($tablica);$j++)
  22. {
  23. for($i=0;$i<5;$i++)
  24. {
  25. if($pow[$i][0]==$j)
  26. {
  27. $zmienna=$pow[$i][1];
  28. $zzz = $dom->createElement($tablica[$zmienna], 'tekst');
  29. $yyy->appendChild($zzz);
  30. }
  31. }
  32. }
  33.  
  34. echo 'Wrote: ' . $dom->save("test.xml") . ' bytes' . '<br>';
  35. echo $dom->saveXML() . '<br>';
  36.  
  37.  
  38. ?>


a wynik jest następujący:
  1. <aaa>
  2. jestem glownym elementem
  3. <glowny1>tekst</glowny1>
  4. <glowny2>tekst</glowny2>
  5. <potomek1>tekst</potomek1>
  6. <potomek2>tekst</potomek2>
  7. <potomek3>tekst</potomek3>
  8. </aaa>


potomków nie podciąga pod glowny1 i glowny2. Próbowałem różnymi sposobami może jest jakaś funkcja lub metoda na rozwiązanie tego problemu??
Z góry dzięki za pomoc
Go to the top of the page
+Quote Post
Pawel_W
post
Post #4





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

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


człowieku, ale ty potrafisz sobie utrudnić życie (IMG:style_emoticons/default/winksmiley.jpg)

nie prościej by było jakbyś zrobił sobie taką tablicę:
  1. $xml = array(
  2. 'aaa' => array(
  3. 'glowny1' => array(
  4. 'potomek1' = array();
  5. 'potomek2' = array();
  6. );
  7. 'glowny2' => array(
  8. 'potomek3' = array();
  9. 'potomek4' = array();
  10. );
  11. );
  12. );
  13. i potem po prostu zamieniasz to na xml ;)
Go to the top of the page
+Quote Post
mirkus
post
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 0
Dołączył: 3.12.2009

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


No można i tak ale jak na przykład będzie 10 potomków(zagnieżdżeń) to już będzie to trochę zakręcone ten kod w php.
A czy była by opcja żeby odwołać się do wybranego fragmentu w kodzie xml i tam wstawić potomka??

A czy jest możliwość w DOM zeby zmienić żeby zmienna $yyy nie odnosiła się do korzenia tylko mogła być podmieniana np do wezel1?(IMG:style_emoticons/default/questionmark.gif) ?


PROBLEM ROZWIAZANY (IMG:style_emoticons/default/smile.gif)

Ten post edytował mirkus 7.01.2010, 16:32:01
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 14:36