Zarábaj až 6 000 € mesačne! Akreditované rekvalifikačné kurzy od 0 €. Viac informácií.

Diskusia – PHP: Čítanie XML metódou SAX

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Avatar
David Hartinger
Vlastník
Avatar
David Hartinger:18.8.2012 10:56

Pěkné a opět dobře řešené předáním elementu třídě Uzivatel.

V .NETu to nejde takto ladně, protože čtení value elementu z nevysvětlitelného důvodu vykoná přesunutí čtečky na další element a naruší tak běh while cyklu 8| Rozumoval jsem nad tím opravdu dlouho a stále mi uniká, jak je to myšleno.

Odpovedať
18.8.2012 10:56
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovedá na David Hartinger
Kit:18.8.2012 11:46

V .NETu je to chápáno jako tokenizer. XMLreader jen posouvá čtecí hlavu po dokumentu, čtení obstarávají další metody. Obojí má své pro a proti. Marně jsem v XMLreader hledal metodu pro získání seznamu atributů elementu, dokumentace je mizerná.

Ve třídě Uzivatel jsem si to značně zjednodušil, do stavového automatu to má daleko. Správně by se metoda read() měla v každé metodě vyskytovat pouze 1× a zbytek řešit pomocí stavů. Pak by to správně přečetlo každý validní dokument. Bylo by to však o dost delší.

Zkusil jsem si i výkonnostní test. Načtení 75000 uživatelů (soubor měl 8 MB) trvalo na mém PC 10 sekund. Výsledek nic moc, ale to je dáno pomalostí PHP v cyklech. DOM by byl určitě o hodně rychlejší.

V PHP bych XMLreader už asi nikdy nepoužil. Je to pracné a výsledek je mizerný. Ještě mohu vyzkoušet SimpleXML, vypadá o něco lépe. Ovšem ta už s metodou SAX nesouvisí.

Odpovedať
18.8.2012 11:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:22.8.2012 12:07

muze se takhle udelat databaze?

 
Odpovedať
22.8.2012 12:07
Avatar
Kit
Tvůrce
Avatar
Odpovedá na albertpatera
Kit:22.8.2012 12:28

Může, ale nedoporučuji to. Pro čtení malého množství delších záznamů (např. článků) by to ještě možná šlo, ale při zápisu by se musel znovu zapisovat celý soubor a řešit kolize. To by bylo velmi nepraktické.

SimpleXML je pro čtení mnohem výhodnější, ale seznam ulic v ČR už v něm číst moc nedoporučuji. Pokud potřebuješ i zapisovat, použij raději nějakou skutečnou databázi. Vyřeší za tebe spoustu starostí.

Uvědom si, že programy pracující s XML vždy sekvenčně čtou celý soubor a při modifikaci ho zase celý přepisují.

Odpovedať
22.8.2012 12:28
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovedá na albertpatera
David Hartinger:22.8.2012 12:33

Proč se každý bojí jednoduché databáze a chce raději používat složité soubory?

Odpovedať
22.8.2012 12:33
New kid back on the block with a R.I.P
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:22.8.2012 12:45

diky..chci udělat seznam uživatelů na webu pomocí databáze, aby každý nový uživatel, který se na webu zaregistruje, tak aby se automaticky zapsal i na seznam registrovaných uzivatelů...pres co to mam teda udelt, díky

 
Odpovedať
22.8.2012 12:45
Avatar
Kit
Tvůrce
Avatar
Odpovedá na albertpatera
Kit:22.8.2012 12:49

Odpovědí jsi už dostal dost: Použij databázi.

Pokud se ti nelíbí síťová databáze MySQL, použij souborovou databázi SQLite.

Odpovedať
22.8.2012 12:49
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
albertpatera
Tvůrce
Avatar
albertpatera:22.8.2012 12:54

jj diky

 
Odpovedať
22.8.2012 12:54
Avatar
Šimon Rataj
Člen
Avatar
Šimon Rataj:6.5.2018 19:43

Proč jsou za tím break dva středníky?

 
Odpovedať
6.5.2018 19:43
Avatar
Petr Čech
Tvůrce
Avatar
Odpovedá na Šimon Rataj
Petr Čech:6.5.2018 22:05

Žádný význam to nemá, ten druhý je zbytečný. Dokážu si představit, že to ale někdo používá jako konvenci, on je přeci jen switch často celkem nepřehledná konstrukce.

Odpovedať
6.5.2018 22:05
the cake is a lie
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zatiaľ nikto nevložil komentár - buď prvý!