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 : <mailto:[EMAIL PROTECTED]> <[EMAIL PROTECTED]>
Tel : 041/562 54 91
Fax : 041/562 54 97
Mobil : 0905 34 00 20