Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Błąd generowania XMLa
Mesukan
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.04.2011

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


Witam potrzębuę pomocy przy funkcji, która konwertuje tablicę na XML. Pojawia się problem i nie mam pojkećia jak go rozwiązać.

Wyskakuje w firefox:

CODE
Błąd parsowania XML: deklaracja XML lub tekstu nie jest na początku jednostki
Obszar: http://localhost/sklep_grywus/catalog/categories
Numer linii: 3, kolumna 1:<?xml version="1.0" encoding="UTF-8"?><categories><node><id><![CDATA[2]]></id><name><![CDATA[Gry]]></name></node><node><id><![CDATA[3]]></id><name><![CDATA[Karty]]></name></node><node><id><![CDATA[4]]></id><name><![CDATA[Modele]]></name></node><node><id><![CDATA[1]]></id><name><![CDATA[Puzzle]]></name></node><node><id><![CDATA[5]]></id><name><![CDATA[Zabawki]]></name></node></categories>
^


Tutaj mam funkcje w modelu home
  1. function array2xml($array, $parent_node=null){
  2. if(is_array($array)==true){
  3.  
  4. $result .= $parent_node==null? '':'<'.$parent_node.'>';
  5. foreach($array as $key=>$value){
  6.  
  7. if(is_numeric($key)==true){
  8. $result .= '<node>';
  9. if(is_array($value)==true){
  10. $result .= $this->array2xml($value);
  11. }else{
  12. $result .= '<![CDATA['.$value.']]>';
  13. }
  14. $result .= '</node>';
  15. }else{
  16. $result .= '<'.$key.'>';
  17. if(is_array($value)==true){
  18. $result .= $this->array2xml($value);
  19. }else{
  20. $result .= '<![CDATA['.$value.']]>';
  21. }
  22. $result .= '</'.$key.'>';
  23. }
  24. }
  25. $result .= $parent_node==null? '':'</'.$parent_node.'>';
  26. return $result;
  27. }else{
  28. return false;
  29. }
  30. }


A funkcja wyświetlania w kontrolerze catalog wygląda tak:

  1. function categories($args=null,$post=null){
  2. header ("content-type: text/xml");
  3. echo '<?xml version="1.0" encoding="UTF-8"?>';
  4. echo $this->model->home->array2xml($this->model->catalog->get_all_categories(),'categories');
  5. }


Męczę się z tym już dwa dni i nie wiem w czym jest problem.
Go to the top of the page
+Quote Post
wdev
post
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 20
Dołączył: 20.01.2010

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


Gdzieś w reszcie skryptu Ci wyrzuca puste linie, problemem jest to, że <?xml ?> pojawia się dopiero w 3 linii, a powinno być w pierwszej... Spróbuj usunąć spację po header, może to ona Ci bruździ. Jak nie, to może jakieś include robisz? Jeśli include zamykasz znacznikiem ?> (co nie jest konieczne) i masz po nim enter, to Ci go wyrzuci do kodu. Ewentualnie profilaktycznie usuń wszystkie białe znaki (IMG:style_emoticons/default/aaevil.gif)

Ten post edytował wdev 4.04.2011, 21:51:14
Go to the top of the page
+Quote Post
Mesukan
post
Post #3





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.04.2011

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


Dokładnie. Chodziło o białe znaki. Po <?php ..... ?> miałem kilka spacji i tu tkwił problem. Dzięki
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


XML nie generuje się poprzez ręczne łączenie tekstu. To najprostsza droga do błędów. Już na chwilę obecną Twój kod jest podatny na błędy (wystarczy, że w $value będzie "]]>" i XML się posypie).

Masz odpowiednie narzędzia do generowania XML-i, więc użyj ich: DOM.
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: 3.10.2025 - 19:31