Title: Re: Divná chyba v SAX parseru?
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 <kamil.podle...@gmail.com>
Předmět: Divná chyba v SAX parseru?
Datum: 1. září 2010, 11:25:40 (GMT +0200)
Přílohy: <none>
msgid:aanlktim1orq7=mcrkbitxqjgseuxprdncpsbrsc4s...@mail.gmail.com
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 <t.procha...@centrum.cz>:
>> 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: t.procha...@centrum.cz
>> WWW: http://www.atomsoft.cz
>> ICQ: 87147320
>> ---------------------------------------------------------------------
------------------------ Konec původní zprávy ------------------------
--
---------------------------------------------------------------------
Tomáš Procházka
E-mail: t.procha...@centrum.cz
WWW: http://www.atomsoft.cz
ICQ: 87147320
---------------------------------------------------------------------
- Divná chyba v SAX parseru? Tomáš Procházka
- Re: Divná chyba v SAX parseru? Kamil Podlesak
- Re: Divná chyba v SAX parseru? Tomáš Procházka
- Re: Divná chyba v SAX parseru? Kamil Podlesak
- Re: Divná chyba v SAX parseru? Oto Buchta
- Re: Divná chyba v SAX parseru? Kamil Podlesak
- Re: Divná chyba v SAX parser... Oto Buchta
- Re: Divná chyba v SAX pa... Kamil Podlesak