Autor | Zpráva | ||
---|---|---|---|
Mr.JavaDoc Profil * |
#1 · Zasláno: 11. 2. 2006, 21:11:19
Caute lidi,
mate nekdo zkusenosti se zpracovavanim velkych xml souboru ? Jde o to, ze pokud mam např. 10MB velký xml soubor, který načtu parserem, tak se celý soubor nejdříve načte do paměti, což je nepoužitelné. Navíc ve spojení s sql dotazem už je to tak náročné, že to buď vyhodí vyjímku kvůli překročení času, nebo maximální přidělené paměti. |
||
llook Profil |
#2 · Zasláno: 11. 2. 2006, 21:29:51
Některé parsery zpracovávají XML postupně. Nejznámější je asi Expat. Jsou názory, že takový způsob zpracování specifikace XML nepřipouští (ahoj Chamurappi), ale funguje to.
Pokud je to v PHP, tak tam je Expat dostupný přes XML Parser Functions. |
||
joejoe Profil * |
#3 · Zasláno: 11. 2. 2006, 21:42:59
no bezne se dela i 50 MB.
proc by to nemelo byt pouzitelne, dnesni pocitace maji bezne 1 GB RAM, takze nacist do ni 10 MB by nemel byt zadny problem.. doba odezvy samozrejme zavisi na tom jakym zpusobem se s temito daty pracuje. Mnozstvi pouzite pameti a doba odezvy se da vylepsit pomoci ruznych profileru a optimalizatoru 1) jaky programovaci jazyk pouzivate C, C++, Javu, php ? 2) jaky typ parseru pouzivate DOM nebo SAX? 3) muzete zkusit upravit to xml a vyhazet z nej zbytecne data.. |
||
Mr.JavaDoc Profil * |
#4 · Zasláno: 11. 2. 2006, 22:08:25
Kdyby se pouzity script poustel na vlastnim stroji, tak to není problém. Bohužel přidělená velikost paměti nezáleží na mě. Mé možnosti jsou omezené, proto se zde ptám na různé možnosti.
1) jedná se o PHP 2) zatim jsem zkousel pouze DOM 3) XML generuje aplikace a bohuzel nelze jej upravit Profilery a optimalizátory určitě nastuduji, tak jako se podívám na Expat. Možnost postupného zpracování je určitě zajímavá z hlediska paměťové náročnosti. |
||
Mr.JavaDoc Profil * |
#5 · Zasláno: 12. 2. 2006, 23:06:34
Tak jsem rozchodil ten Expat, ale mám docela problém s češtinou. České znaky uzavřené v nějakém TAGu se buď nijak nezobrazí, nebo je místo nich otazník.
|
||
Mr.JavaDoc Profil * |
#6 · Zasláno: 12. 2. 2006, 23:10:16
Je to docela problém, dokument generuje wokení aplikace a nic než win-1250 z toho nedostanu.
Na webu je to také napsáno : "The supported source encodings are ISO-8859-1, US-ASCII and UTF-8. " |
||
Marty Profil |
#7 · Zasláno: 12. 2. 2006, 23:11:18 · Upravil/a: Marty
Zkontrolujte vstupní a výchozí kódování (zda jsou stejné) a pak taky nastavení kódování ve funkci xml_parser_create().
BTW: US-ASCII = windows-1250 |
||
Mr.JavaDoc Profil * |
#8 · Zasláno: 12. 2. 2006, 23:50:26
Děkuji za nakopnutí správným směrem..
XML soubor je v kódování CP1250 a výsledné data musí být v UTF-8. Aby vše fungovalo, je třeba použít parametr funkce xml_parser_create
|
||
Mr.JavaDoc Profil * |
#9 · Zasláno: 13. 2. 2006, 12:25:50
Tak jsem se ukvapil, fungovalo to protože jsem omylem ručně překonvertoval zdrojový xml soubor do utf-8. Když jsem ho přepsal původním souborem v kódování cp1250, zastavil se parser u prvního českého znaku a dále nepokračoval.
Takže jsem zase ve slepé uličcce. Máte někdo nápad ?? |
||
Mr.JavaDoc Profil * |
#10 · Zasláno: 13. 2. 2006, 12:59:14
Vypadá to, že se dobrá věc konečně podařila. Pomohla moje oblíbená funkce iconv().
|
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0