S čím konkrétně nesouhlasíte? Nějak mi to nedává smysl...

Samozřejmě, pull parser je v takovémto případě lepší než SAX - však
také proto pull parsery vůbec existují.
Ale to neznamená, že se nikdo nepokoušel SAX parser optimalizovat.

Kamil Podlešák

2010/9/2 Oto Buchta <[email protected]>:
> Dne 1. září 2010 15:48 Kamil Podlesak <[email protected]> napsal(a):
>> Ono se to nezdá, ale používání stále jediné datové struktury (místo
>> vytváření nových) ušetří hodně práce garbage collectoru a u opravdu
>> obrovských xml to bude znát (dokonce by mohlo dojít OutOfMemoryError).
>
> Nesouhlasím. U opravdu velkých XML (řádově stovky MB a více) není
> konstrukce objektové reprezentace XML vůbec žádoucí a tedy pro tento
> případ je HashMapa na atributy získávaná pomocí PullParseru ideálním
> řešením. A dobrý Pull Parser používá pool, takže se akorát přesunou
> Stringy. Doufám, že takto funguje STAX (JSR 173). Nikdy jsem jiný než
> Systinetí PullParser nepoužíval - od dob Systinetu jsem nedělal s
> velkými XML.
>
>> Kamil Podlešák
>>
>> 2010/9/1 Tomáš Procházka <[email protected]>:
>>> Díky za tip. Zajímavé, že to v 99% funguje takto naprosto v pořádku,
>>> kopírovat všechny atributy do hashmapy pro každý XML element mi příjde jako
>>> zbytečnost, když už to je vše v instanci Attributes :-(
>>>
>>>
>>> --------------------------- Původní zpráva ---------------------------
>>>  Odesilatel: Kamil Podlesak <[email protected]>
>>>     Předmět: Divná chyba v SAX parseru?
>>>       Datum: 1. září 2010, 11:25:40 (GMT +0200)
>>>     Přílohy: <none>
>>>       msgid:[email protected]
>>>
>>> K> Zdravím,
>>>
>>> K>  Nejedná se o chybu, v dokumentaci (javadoc k metodě startElement, od
>>> K> verze 1.5 výše) je napsáno:
>>>
>>> K> atts - the attributes attached to the element. If there are no
>>> K> attributes, it shall be an empty Attributes object. The value of this
>>> K> object after startElement returns is undefined
>>>
>>> K>  Ta poslední věta je klíčová: data z těch atributů si musíte "vytahat"
>>> K> do nějaké vlastní struktury.
>>>
>>> K> Kamil Podlešák
>>>
>>> K> 2010/9/1 Tomáš Procházka <[email protected]>:
>>>>> Zdravím.
>>>
>>>>> Setkal se už někdo s tím, že si standardní SAX parser v JDK 1.6
>>>>> (konkrétně
>>>>> mám 1.6.0.18) vymýšlí neexistující hodnota atributů v XML?
>>>
>>>>> Konkrétně mám XML, které obsahuje kromě jiného asi 20 000 takovýchto
>>>>> elementů?
>>>>> <replace key="...">...</replace> například <replace
>>>>> key="unsubscribe">http://nekde.cz/neco.html</replace>
>>>
>>>>> V SAX handleru, bez jakéhokoliv knihovny, jen v samotné Javě.
>>>
>>>>> V handleru pak v metod
>>>
>>>>> public void startElement() si pak pouze uložím do třídních proměnných
>>>>> atributy tagu a nuluju StringBuffer
>>>
>>>>> this.value.setLength(0);
>>>>> this.attributes = attributes;
>>>
>>>>> v endElement() pak ukládám do mapy vždy hodnotu atributu key a obsah
>>>>> celého
>>>>> elementu, tedy:
>>>
>>>>> someMap.put(attributes.getValue("key"), value.toString());
>>>
>>>>> všechno funguje, až na to, že zhruba v 300 případech z těch 20 000
>>>>> elementů
>>>>> se přečte úplně jiný klíč, přípustné hodnoty jsou jen unsubscribe a link
>>>>> a v
>>>>> těch 300 případech tam je něco jako "          <"
>>>
>>>>> Což je samozřejmě nepřípustné
>>>
>>>
>>>>> Zkoušel jsem za
>>>
>>>>> this.attributes = attributes;
>>>
>>>>> přidat
>>>
>>>>> if (attributes.getValue(0) != null &&
>>>>> !"link".equals(attributes.getValue(0))
>>>>> && !"unsubscribe".equals(attributes.getValue(0))) {
>>>>>   logger.error("-------- '" + attributes.getValue(0) + "'");
>>>>> }
>>>
>>>>> abych si zalogoval všechny případy kdy k tomu dojde a přestalo to dělat,
>>>>> téměř úplně
>>>
>>>>> Takové chování VM vůbec nechápu. Kdyby to dělalo jen na jednom stroji,
>>>>> tak
>>>>> řeknu, že je něco rozbité na něm. Jenže na ten problém jsme přišli na
>>>>> Linuxovém serveru a bez problémů jsem ho napodobil i na Windows stroji.
>>>>> navíc import ještě probíhá jen v jednom vlákně.
>>>
>>>
>>>
>>>>> Datum: 9:38:09    1. září 2010
>>>>> --
>>>>> ---------------------------------------------------------------------
>>>>>  Tomáš Procházka
>>>
>>>
>>>>>  E-mail: [email protected]
>>>>>     WWW: http://www.atomsoft.cz
>>>>>     ICQ: 87147320
>>>>> ---------------------------------------------------------------------
>>>
>>>
>>> ------------------------ Konec původní zprávy ------------------------
>>>
>>> --
>>> ---------------------------------------------------------------------
>>>  Tomáš Procházka
>>>
>>>
>>>  E-mail: [email protected]
>>>     WWW: http://www.atomsoft.cz
>>>     ICQ: 87147320
>>> ---------------------------------------------------------------------
>>
>
>
>
> --
> Oto 'tapik' Buchta, [email protected], http://tapikuv.blogspot.com
>

Odpovedet emailem