xmlreader, korzystał ktoś z tego? |
xmlreader, korzystał ktoś z tego? |
1.07.2007, 11:15:43
Post
#1
|
|
Grupa: Zarejestrowani Postów: 110 Pomógł: 0 Dołączył: 19.07.2006 Skąd: Lublin Ostrzeżenie: (0%) |
siemanko. mam problem z klasą xmlreader.
Proste xml'e przechodzą gładko przez ten parser i nie ma problemu ze stworzeniem tablicy wynikowej z parsowanego xml'a. Ale co zrobić w przypadku gdy mój xml ma taką strukturę:
Wiadomo, że przy parsowaniu xmlreaderem korzystamy z pętli while:
Ale w każdym przypadku zwracana tablica zawiera ileś tam tablic w sobie i nie sposób tego połączyć w całość. Ma ktoś jakieś doświadczenie w tym temacie? Google tutaj wiele nie radzi. Owszem napisałem skrypt który wykonuje to czego potrzebuje, ale użyłem do tego simplexml_load_file(), ale to nie sposób bo plik który parsuje ma 40MB, a przy simplexml_load_file() całość ładowana jest do ramu i strasznie obciąża serwer przy samym parsowaniu, a ja jeszcze dane z xml'a muszę wrzucić do mysql'a. Za dobrą poradę stawiam piwko |
|
|
1.07.2007, 12:45:49
Post
#2
|
|
Grupa: Zarejestrowani Postów: 295 Pomógł: 7 Dołączył: 26.03.2004 Skąd: Opole Ostrzeżenie: (0%) |
Taki urok XML'a, że w przeciwieństwie do struktur logicznych baz danych będących zawsze macierzami prostokątnymi, xml moze opisywać struktury o dowolnie złożonej topologii (rozgałęzieniach). Nie przyglądałem się strukturze twojego xml ale podejrzewam, że problem polega własnie na tym, że oczekujesz wyniku w postaci jakiejś tablicy o i * j elementach a tymczasem okazuje sie, że jak zagłebiasz sie w dany poziom danych xml oczekujesz okreslonych danych podczas, gdy xml serwuje Ci kolejne poziomy swojej struktury
Zderzyłem sie z tym bolesnie w przypadku parsowania plików worda zapisanych w formacie xml, ale w końcu opanowałem technikę ingerowania w pliki worda i wydobywania z nich i podmieniania dowolnych rzeczy. Musisz rozrysować sobie na kartce topologię tego pliku xml - przewidzieć wszystkie możliwosci rozwijania jego struktury. Nie wszystkie poziomy są potrzebne do przeniesienia xml na tablicę, ale decyzje muszą być przemyślane i zazwyczaj parsowanie złozonego pliku to jazda po wszystkich węzłach z góry na dół i analizowanie każdego z osobna i w odniesieniu do nadrzędnych. -------------------- |
|
|
17.03.2009, 13:13:02
Post
#3
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 17.03.2009 Ostrzeżenie: (0%) |
Witaj!
Właśnie rozwiązałem tą kwestię kumplowi - chodzi o pobieranie danych z pliku dostarczonych przez action - wklejam , ponieważ na pewno każdy, kto będzie chciał skorzystać z funkcji zakładania sklepu partnerskiego actiona może spotkać się z tym problemem. <?php $xml = new XMLReader(); $xml->open($plik); $kategorie_dostawcy_z_pliku=array(); $producenci_z_pliku=array(); while($xml->read()) { if($xml->name == "PodGrupa") { $id = $xml->getAttribute('id'); $name = $xml->getAttribute('nazwa'); $kategorie_dostawcy_z_pliku[$id]=$name; } if($xml->name == "producent") { $id = $xml->getAttribute('id'); $name = $xml->getAttribute('nazwa'); $producenci_z_pliku[$id]=$name; } if($xml->name == "produkt") { $id = $xml->getAttribute('id'); $nazwa = $xml->getAttribute('nazwa'); $id_producenta = $xml->getAttribute('producent'); $id_kategorii= $xml->getAttribute('grupa'); $producent=$producenci_z_pliku[$id_producenta]; $kategoria_dostawcy=$kategorie_dostawcy_z_pliku[$id_kategorii]; $cena=$xml->getAttribute('cena_netto'); } if($xml->name == "zdjecie") { $zdjecie = $xml->getAttribute('plik'); } if($id <> NULL AND $nazwa <> NULL AND $cena <> NULL AND $kategoria_dostawcy <> NULL AND $producent <> NULL) echo "<p>".$id.":".$nazwa.":".$cena.":".$kategoria_dostawcy.":".$producent.":".$zdjecie."</p><hr>"; } $xml->close(); ?> Mam nadzieję, że się przyda Ten post edytował trukszyn 17.03.2009, 13:16:33 |
|
|
3.10.2010, 11:06:07
Post
#4
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 1 Dołączył: 1.06.2010 Ostrzeżenie: (0%) |
Fajnie - tylko, że te same produkty się powtarzają przy odczycie.
|
|
|
Wersja Lo-Fi | Aktualny czas: 10.06.2024 - 17:44 |