Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: XML -> Tablica
Forum PHP.pl > Forum > PHP
Riklaunim
Mam taki plik XML
Kod
<database>
    <row>
  <field>
     <key>id</key>
     <value>3</value>
  </field>
  <field>
     <key>nazwa</key>
     <value>jurek</value>
  </field>
  <field>
     <key>mail</key>
     <value>foo@1.pl</value>
  </field>
    </row>
    <row>
  <field>
     <key>id</key>
     <value>4</value>
  </field>
  <field>
     <key>nazwa</key>
     <value>tomek</value>
  </field>
  <field>
     <key>mail</key>
     <value>bar@gazeta.pl</value>
  </field>
    </row>
</database>


I plik php:
  1. <?
  2. // hamskie \"wczytanie\" pliku
  3. include 'foo.xml';
  4. $wynik = ob_get_contents();
  5.  
  6. // Przeróbka tagów na strukturę tablicy
  7. $wynik = strtr($wynik, array(&#092;"r\" => \"\", \"n\" => '', ' ' => '', '<database>' => 'Array(', '</database>' => ');', '<row>' => \"Array(\", '</row>' => '), ', '<field>' => '', '</field>' => ', ', '<key>' => '\"', '</key>' => '\"', '<value>' => '=> \"', '</value>' => '\"'));
  8. $wynik = str_replace(', )', ')', $wynik);
  9.  
  10. // wynik
  11. $ar = is_array($wynik); // $ar = 1 gdy $wynik jest tablicą
  12. echo &#092;"$wynik<BR><BR>Tablica: $ar\";
  13. ?>


Jak zrobić by $wynik był traktowany jako tablica lub zrobić z niego tablicę smile.gif
rzseattle
Jestem pewien ze taki topic juz byl na forum ale niestety niepotrafie go znalezc.
A poki co php => XML
BartekR
Do konwersji XML do struktur tablicowych w php polecam Ci klasę XML_Unserializer z pakietu PEAR::XML_Serialize.
Riklaunim
Równie dobrze mogę użyć SAXY/DOMIT czy innych dużych/mniejszych komponentów.. tylko po co winksmiley.jpg chce mieć jak najprostszy i najszybszy kod przeznaczony do określonego zadania.
BartekR
Skoro nie chcesz porządnie parsować XML, to Twoja sprawa. :)

Twoje strtr() i str_replace() nie tworzą tablicy. Tworzą kawałek wyrażenia, które wykonane przez php zbudowałoby tablicę, prawda? Więc co? Więc wykonaj to wyrażenie. ;)

Sprawdź to:
  1. <?php
  2.  
  3. eval( '$wynik = ' . $wynik );
  4. print_r( $wynik );
  5.  
  6. ?>
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.