Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XML] Zapisywanie xml'a
Forum PHP.pl > Forum > PHP
shpaque
Witam,
robię pierwszy raz xmla, dlatego nie spodziewałem się braku błędów i niedoróbek. Jest on prosty, ale:

  1. $xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?>');
  2. $xml -> addChild('Kompilacja', date('Y-m-d H:i:s'));
  3.  
  4. $row = 1;
  5. foreach ($articles as $a)
  6. {
  7. $product = $xml -> addChild('Produkt');
  8. $product -> addChild('GrupaMateriałowa', $_POST['grupa'.$row]);
  9. $product -> addChild('MarkaProduktu', $_POST['marka'.$row]);
  10. $product -> addChild('Dostawca', $_POST['dostawca'.$row]);
  11. $product -> addChild('MateriałPLU', $_POST['plu'.$row]);
  12. $product -> addChild('KodEAN/UPC', $_POST['ean'.$row]);
  13. $product -> addChild('NumerKartotekiMG', $_POST['mg'.$row]);
  14. $product -> addChild('Model', $_POST['model'.$row]);
  15. $product -> addChild('Opis', $_POST['opis'.$row]);
  16. $product -> addChild('StatusLokalizacji', $_POST['lokalizacja'.$row]);
  17. $product -> addChild('StatusDostępności', $_POST['dostepnosc'.$row]);
  18. $product -> addChild('AktywnyOleOle', $_POST['aktywny'.$row]);
  19. $row++;
  20. }


linia 1 to linia 37 w pliku. Odpowiedz jest taka:

  1. Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, '<' not found in /home/smusic/ftp/oleole/php/update.php on line 37
  2. Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /home/smusic/ftp/oleole/php/update.php:37 Stack trace: #0 /home/smusic/ftp/oleole/php/update.php(37): SimpleXMLElement->__construct('<?xml version="...') #1 /home/smusic/ftp/oleole/admin/admin.php(65): include('/home/smusic/ft...') #2 {main} thrown in /home/smusic/ftp/oleole/php/update.php on line 37


#EDIT

znalazłem gdzieś przedziwne rozwiązanie, które o dziwo działa.
  1. $xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><cokolwiek></cokolwiek>');
jesli wpiszemy tagi od razu, plik sie utworzy bezp roblemu, tzn z problemem, bo zeby sie utworzyl poprawnie trzeba dac dodatkowo zamiast
  1. $xml -> asXML('plik');
to
  1. $xml -> saveXML('plik.);


teraz wygląda to tak:

  1. $newFileName = 'Lista Asortymentowa GREEN HOUSE d. '.date('Y-m-d').'.xml';
  2.  
  3. $xml = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?><GreenHouse></GreenHouse>');
  4. $xml -> addChild('Kompilacja', date('Y-m-d H:i:s'));
  5.  
  6. $row = 1;
  7. foreach ($articles as $a)
  8. {
  9. $product = $xml -> addChild('Produkt');
  10. $product -> addChild('GrupaMateriałowa', $_POST['grupa'.$row]);
  11. $product -> addChild('MarkaProduktu', $_POST['marka'.$row]);
  12. $product -> addChild('Dostawca', $_POST['dostawca'.$row]);
  13. $product -> addChild('MateriałPLU', $_POST['plu'.$row]);
  14. $product -> addChild('KodEAN', $_POST['ean'.$row]);
  15. $product -> addChild('NumerKartotekiMG', $_POST['mg'.$row]);
  16. $product -> addChild('Model', $_POST['model'.$row]);
  17. $product -> addChild('Opis', $_POST['opis'.$row]);
  18. $product -> addChild('StatusLokalizacji', $_POST['lokalizacja'.$row]);
  19. $product -> addChild('StatusDostępności', $_POST['dostepnosc'.$row]);
  20. $product -> addChild('AktywnyOleOle', $_POST['aktywny'.$row]);
  21. $row++;
  22. }
  23. $xml -> saveXML('./../xml/'.$newFileName);
  24. echo "<script>document.location.href = './../xml/".$newFileName."';</script>";
  25. exit;


tyle ze pliku nie "beautifuje" smile.gif a dodanie "\n" na koncu kazdego childa nic nei da, bo rozwali strukturę... Chrome wyswietla plik jak powinno czyli w formie drzewa, ale sam plik nie jest zapisany i "uładniony" w formie enterów po każdytm wpisie...
Pyton_000
A na co ci ładny xml?

https://stackoverflow.com/questions/798967/...a-formatted-way
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.