Ahoj,

toto by zrejme šlo (predradený SAX handler). Možno ešte nájdem čas na
vyskúšanie. Inak v tomto konkrétnom prípade nie je výkon problém. Maximálnu
záťaž predpokladám tak 100 XML / deň ;-) 


To Tomas Hubalek:
>A zkusil jste prohnat toto XML od zakaznika pres Jtidy? To by melo takoveto
hnusoty opravit a je to jednoducha akce.

Nie, zatiaľ neskúšal, ale dávať tam ďalšiu knižnicu len kvôli odstráneniu
white space - to si asi radšej napíšem ten SAX handler sám.

Rastislav "Bedo" Siekel


> -----Original Message-----
> From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] On Behalf Of Jan Moravec
> Sent: 30. októbra 2007 17:05
> To: 'Java'
> Subject: RE: JAXB - unmarshal s white space
> 
> Zdravim,
> 
> Mate pravdu, s tim whiteSpace to XMLSpy (mensi duvera) i Suni 
> Multi-Schema Validator (vetsi duvera) zkousne a XML prohlasi 
> za validni. Zajimave, opet jsem se dozvedel neco noveho :) 
> 
> Takze dostavate validni XML a neni kde si stezovat. Pak bych 
> mozna zvazil reseni typu nejake normalizace prichoziho XML 
> dokumentu do podoby, kterou by
> JAXB2 zkouslo. Tj. trivialni SAX handler, ktery u vsech, ci 
> jen vybranych elementu (dle konfigurace) odrizne pocatecni a 
> koncovy whitespace. Sice ta normalizace zabere par ms navic, 
> ale ty rychle ziskate zpet tim, ze nasledne pouzijete JAXB2 
> misto JAXB1 - dle perf porovnani na netu by na tom JAXB2 melo 
> byt podstatne rychleji a to nemluvim o vetsim komforu jeho pouziti.
> Jakmile Koshuke aspol JAXB2 zafixuji, normalizacni fazi 
> jednoduse vyradite a nemusite uz nikdy resit prechod na JAXB2.
> 
> Jen napad jak obejit pouziti tech bindingu a psani vlastnich 
> konvertoru.
> 
> Honza
> 
> -----Původní zpráva-----
> Od: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED] za uživatele Rastislav Siekel
> Odesláno: Tuesday, October 30, 2007 14:33
> Komu: 'Java'
> Předmět: RE: JAXB - unmarshal s white space
> 
> 
> Ahoj Honza,
> 
> prešiel som bugzillu na JAXB a už je to tam zapísané ako bug 
> 396 (https://jaxb.dev.java.net/issues/show_bug.cgi?id=396).
> 
> 
> To čo píšete znie síce rozumne ale predstavte si situáciu - 
> zákazník z programu tretej strany posiela ku mne XML podľa 
> tejto mojej schémy. Ak v posielanom XML sú nejaké white space 
> okolo dátumov alebo enumeration, ja dostanem NULL, z toho 
> usúdim, že tam mám dať default hodnotu a zapíšem podľa toho 
> dáta do DB.
> 
> Výsledok:
> 1. On nedostane žiadnu chybu, pretože to čo poslal JE VALIDNÉ 
> xml (aj keď vy tvrdíte, že nie je). 2. Ja neviem o žiadnej 
> chybe, pretože nechať napr.
> tento konkrétny dátum NULL je povolený ťah. 3. Ale dáta sú chybné.
> 
> Ako som už písal minule, JAXB 1 to rieši presne podľa mojich 
> požiadaviek, takže nevidím dôvod ho nepoužiť.
> 
> Ale vďaka za názor, aspoň som zistil, že sa o tom už v JAXB 
> komunite vie.
> 
> Rastislav "Bedo" Siekel
> 
> 
> > -----Original Message-----
> > From: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] On Behalf Of Jan Moravec
> > Sent: 30. októbra 2007 12:37
> > To: 'Java'
> > Subject: RE: JAXB - unmarshal s white space
> > 
> > Zdravim,
> > 
> > Mozna to zni prilis trivialne, ale co kdybyste to XML 
> generoval jako 
> > validni, tj. bez white space v dateTime hodnotach a yhnul se tak 
> > nutnosti psani vlastnich konvertoru.
> > Pokud Vam jde o citelnost, preci muzete i pak generovat 
> citelne XML s 
> > odradkovanim mezi elementy apod.
> > 
> > Prijde mim, ze jdete zcela zbytecne hlavou proti zdi a 
> drzel bych se 
> > hesla ze vzdy je lepsi odstranit pricinu problemu (whitespace v 
> > dateTime), nez resit/obchazet dusledky (JAXB2 odmita XML 
> zpracovat + 
> > pisu si vlastni konvertory + musim pouzivat externi/interni JAXB 
> > binding predpis apod).
> > 
> > Jinak pokud mate problem s JAXB2, zeptejte se primo v jejich 
> > konferenci.
> > Moje zkusenost s ni je vice nez pozitivni a odpovedi jsem 
> mel vzdy do 
> > max druheho dne.
> > 
> > Honza
> > 
> > -----Původní zpráva-----
> > Od: [EMAIL PROTECTED]
> > [mailto:[EMAIL PROTECTED] za uživatele Rastislav Siekel
> > Odesláno: Tuesday, October 30, 2007 08:47
> > Komu: 'Java'
> > Předmět: RE: JAXB - unmarshal s white space
> > 
> > 
> > Nie, existuje atribút "binding" ktorý umožňuje zadať názov 
> externého 
> > súboru, ktorý bude tiež slúžiť na generovanie JAVA 
> zdrojákov. Ale aj 
> > tak ostáva nutnosť písať si pre skoro každý typ vlastný "tupý" 
> > handler, ktorý len otrimuje vstup . Ale nejde mi do hlavy, 
> že by sa na 
> > to v JAXB, alebo vlastnej XML Schéme fakt nemyslelo.
> > 
> > Rastislav "Bedo" Siekel
> > 
> > 
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] 
> [mailto:[EMAIL PROTECTED]
> > > On Behalf Of Lukas Zapletal
> > > Sent: 29. októbra 2007 11:19
> > > To: Java
> > > Subject: Re: JAXB - unmarshal s white space
> > > 
> > >  No a ta vec musi byt soucasti toho schematu? Nemuzete to xjc 
> > > generatoru rict nejak jinak?
> > > 
> > > LZ
> > > 
> > > 2007/10/29, Rastislav Siekel <[EMAIL PROTECTED]>:
> > > >
> > > >
> > > > Odpoviem si sám :-(
> > > >
> > > > Po niekoľkých dňoch hľadania som zistil, že bez niečoho
> > > podobného to
> > > > zrejme
> > > > nepôjde:
> > > >
> > > > XML Schéma:
> > > > ...
> > > > <jaxb:globalBindings>
> > > >            <jaxb:javaType name="java.util.Date"
> > > xmlType="xs:dateTime"
> > > >             
> parseMethod="xxx.yyy.jaxb.DateConverter.parseDateTime"
> > > >             
> > > printMethod="xxx.yyy.jaxb.DateConverter.printDateTime" />
> > > > </jaxb:globalBindings> ...
> > > >
> > > > A musím si samozrejme napísať Triedu
> > > "xxx.yyy.jaxb.DateConverter". A
> > > > neplatí to len pre dátumy, ale aj pre "enumeration" a
> > > vlastne všetky
> > > > typy okrem čísel.
> > > > Toto riešenie mi fakt nepripadá vhodné, pretože
> > potrebujem vytvoriť
> > > > schému pre heterogénne prostredie a druhá strana nemá 
> vedieť, že 
> > > > používam nejaký JAXB.
> > > >
> > > > Takže výsledok - sú možné 2 riešenia:
> > > > 1. Používať starý dobrý JAXB 1.
> > > > 2. Prispôsobiť XML tomu, že hodnoty musia byť bez white 
> space na 
> > > > jednom riadku vrátane štartovacieho a ukončovacieho tagu.
> > > >
> > > > Ja osobne pôjdem prvou cestou.
> > > >
> > > >
> > > > Ak by ste mi niekto tieto zistenia vyvrátil, bol by som
> > > šťastný človek
> > > > ;-)
> > > >
> > > > Rastislav "Bedo" Siekel.
> > > >
> > > >
> > > >  ________________________________
> > > >  From: [EMAIL PROTECTED]
> > > [mailto:[EMAIL PROTECTED]
> > > > On Behalf Of Rastislav Siekel
> > > > Sent: 22. októbra 2007 15:13
> > > > To: 'Java'
> > > > Subject: JAXB - unmarshal s white space
> > > >
> > > >
> > > >
> > > > Zdravím vospolok,
> > > >
> > > > asi to bude len nejaká blbosť, ale nemôžem prísť na to,
> > ako donútiť
> > > > JAXB robiť unmarshalling, ak je vstupné XML well-formated.
> > > Pokiaľ je
> > > > na vstupe niečo ako:
> > > >
> > > > <dtZadania>2007-09-30T15:23:24.000</dtZadania>
> > > >
> > > > - je všetko v poriadku.
> > > >
> > > >
> > > > Ak tam je dátum vrátane \n:
> > > >
> > > > <dtZadania>
> > > >     2007-09-30T15:23:24.000
> > > > </dtZadania>
> > > >
> > > > tak mi to proste vráti NULL.
> > > >
> > > >
> > > > Schéma bola najprv:
> > > > <xsd:element name="dtZadania" type=""xsd:dateTime" minOccurs="0"
> > > > maxOccurs="1" />
> > > >
> > > > teraz je:
> > > >
> > > >
> > > >
> > > > <xsd:element name="dtZadania" minOccurs="0" maxOccurs="1"> 
> > > > <xsd:simpleType>
> > > >         <xsd:restriction base="xsd:dateTime">
> > > >             <xsd:whiteSpace value="collapse" />
> > > >         </xsd:restriction>
> > > >     </xsd:simpleType>
> > > > </xsd:element>
> > > >
> > > >
> > > > Poraďte niekto, kde sa to nastavuje?
> > > >
> > > > Rastislav "Bedo" Siekel
> > > >
> > > > P.S. JAXB je vo verzii 2.1.5
> > > >
> > > >  ________________________________
> > > >
> > > > Ing. Rastislav Siekel
> > > > Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : 
> > > > <[EMAIL PROTECTED]> Tel : 041/562 54 91 Fax : 041/562 54
> > 97 Mobil :
> > > > 0905 34 00 20
> > > >
> > > 
> > > 
> > > --
> > > Lukas Zapletal
> > > http://lukas.zapletalovi.com
> > > 
> > 
> > 
> 
> 

Odpovedet emailem