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 > > > > > > > > >