Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Generowanie pliku xml za pomocą php
Forum PHP.pl > Forum > PHP
Darek1985
Witam.Chcę stworzyć skrypt który będzie generował pliik xml według poniższego szablonu

  1. <?xml version="1.0" standalone="yes" ?>
  2. - <all>
  3. - <aktualnosci>
  4. - <newsy>
  5. - <news>
  6. - <data>
  7.  <b>12-12-2006</b>
  8.  </data>
  9.  <tresc>jakis news</tresc>
  10.  </news>
  11. - <news>
  12. - <data>
  13.  <b>13-13-1313</b>
  14.  </data>
  15.  <tresc>jakis inny news</tresc>
  16.  </news>
  17. - <news>
  18. - <data>
  19.  <b>14-14-1413</b>
  20.  </data>
  21.  <tresc>news</tresc>
  22.  </news>
  23. - <news>
  24. - <data>
  25.  <b>15-15-1413</b>
  26.  </data>
  27.  <tresc>news aaaaaaa</tresc>
  28.  </news>
  29. - <news>
  30. - <data>
  31.  <b>16-16-1413</b>
  32.  </data>
  33.  <tresc>news bbbbbbbbbbbb</tresc>
  34.  </news>
  35. - <news>
  36. - <data>
  37.  <b>17-17-1713</b>
  38.  </data>
  39.  <tresc>news ccccccccccc</tresc>
  40.  </news>
  41. - <news>
  42. - <data>
  43.  <b>18-18-1413</b>
  44.  </data>
  45.  <tresc>newshhhhhhhhhh</tresc>
  46.  </news>
  47.  </newsy>
  48.  </aktualnosci>
  49. - <linkownia>
  50. - <linki>
  51. - <link>
  52.  <opis>aaaaa</opis>
  53.  <adres>www.az.pl</adres>
  54.  </link>
  55. - <link>
  56.  <opis>bbbbbb</opis>
  57.  <adres>www.google.pl</adres>
  58.  </link>
  59. - <link>
  60.  <opis>Avin</opis>
  61.  <adres>www.avin.pl</adres>
  62.  </link>
  63.  </linki>
  64.  </linkownia>
  65. - <email>
  66.  <adres>erven@avin.pl</adres>
  67.  </email>
  68. - <artykuly>
  69.  <artykul1>jakis przykladowy artykul</artykul1>
  70.  <artykul2>znow zjebany artykul</artykul2>
  71.  <artykul3>krowa lataja</artykul3>
  72.  <artykul4>bciany spiewaja</artykul4>
  73.  </artykuly>
  74. - <galeria>
  75.  <zdjecie1 opis="moj pierwszy opis">foto0.jpg</zdjecie1>
  76.  <zdjecie2 opis="rower">foto1.jpg</zdjecie2>
  77.  <zdjecie3 opis="auto">foto2.jpg</zdjecie3>
  78.  <zdjecie4 opis="motorowka">foto3.jpg</zdjecie4>
  79.  <zdjecie5 opis="gniazdo">foto4.jpg</zdjecie5>
  80.  <zdjecie5 opis="bulka z pradem">foto5.jpg</zdjecie5>
  81.  <zdjecie5 opis="maslo maslane">foto6.jpg</zdjecie5>
  82.  </galeria>
  83.  </all>

Wszystko było by ok kod narazie beta nie wywołuje wszystkiego to

  1. <?php
  2. header("Content-type: text/xml; charset=UTF-8");
  3. mysql_connect('ip','baza','haslo') or die();
  4.  
  5. mysql_select_db("pud") or die("nie mozna sie polaczyc z z ta baza");
  6. $wynik=mysql_query("SELECT*FROM nosh_ar ;") or die("blad w zapytaniu");
  7.  
  8. $rekord = mysql_fetch_assoc($wynik);
  9.  
  10. echo '<?xml version="1.0" encoding="UTF-8"?>';
  11. $data=$rekord['last_modified'];
  12.  
  13. $tresc=$rekord['content'];
  14. $opis=$rekord['description'];
  15.  
  16.  
  17.  echo '<all>'.'</br>';
  18. echo '<aktualnosci>'; 
  19.  echo '<newsy>';
  20. while ($rekord = mysql_fetch_assoc($wynik)){
  21. echo '</br>'.'<news>';
  22. echo '<data>'; 
  23.  echo '<b>'.$data.'</b>';
  24. echo '<data>';
  25.  echo '<tresc>'.$tresc.'</tresc>';
  26. echo '</news>';
  27.  echo '</newsy>';
  28. } 
  29. echo '</aktualnosci>';
  30. echo '</all>';
  31.  
  32. echo '<linkownia>';
  33.  echo '<linki>';
  34.  echo '<link>';
  35. echo '<opis>'.$opis.'</opis>';
  36.  echo '<adres>'.$opis.'</adres>';
  37.  echo '</link>';
  38.  echo '</linki>';
  39. echo '<linkownia>';  
  40.  ?>


jednak mój plik generuje coś takiego
<?xml version="1.0" encoding="UTF-8"?><all></br><aktualnosci><newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></br><news><data><b>2006-08-17 17:43:43</b><data><tresc>uonetime</tresc></news></newsy></aktualnosci></all>
Wszystko w jednym pasku.Jak zrobić aby znaczniki były oddzielone tak jak powyższym przykładzie,pozatym plik generuje kod xml ale dalej w pliku php.Jak zrobic aby był on zapisany z rozszerzeniem xml?
legorek
Tam gdzie chcesz złamac linię dopisać "\r\n" (koniecznie w " bo z ' nie będzie działać)

czyli np:

  1. <?php
  2. echo "<aktualnosci>rn";
  3. ?>
lub jak wolisz

  1. <?php
  2. '<aktualnosci>'."rn"
  3. ?>
Darek1985
Ok super o to chodziło.A da się tak zrobić aby ten kod xml zapisywał w pliku z rozszerzeniem xml? bądz w pliku xml dać kod php który by był przetwarzany przez php i dawał w rezultacie taki kod?
Cysiaczek
Po prostu nie 'echuj'* tego, tylko przypisz do zmiennej, a potem zaisz do pliki. POtrzebne funkcje znajdziesz w manualu.

Pozdrawiam.

* Przepraszam za tą dziwną konstrukcję językową laugh.gif
legorek
Cytat(Darek1985 @ 17.08.2006, 16:24 ) *
bądz w pliku xml dać kod php który by był przetwarzany przez php i dawał w rezultacie taki kod?


Tak da się to zrobić, wykorzystaj pliki .htaccess i dyrektywę ForceType.

Kod
<Files plik.xml>
ForceType application/x-httpd-php
</Files>


Spowoduje to że plik.xml wykona się jak skrypt php. Oczywiście musisz mieć odpowiedniu skonfigurowany serwer, ale wydaje mi się, że na większości serwerów to działa.
mariuszn3
W ogóle może lepiej skorzystaj z jakiegoś gotowego rozszerzenia php do XML'a i potem po prostu wypluj kod.. mniej pisania będzie i ryzyka, że gdzieś coś pomyliłeś.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.