A zkusil jste prohnat toto XML od zakaznika pres Jtidy? To by melo takoveto hnusoty opravit a je to jednoducha akce.
Tom > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On > Behalf Of Rastislav Siekel > Sent: Tuesday, October 30, 2007 6:33 AM > To: 'Java' > Subject: 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 > > > > > > >
