Title: Divná chyba v SAX parseru?
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
---------------------------------------------------------------------

Odpovedet emailem