In jaxb, come si converte una stringa in xsd in java.util.UUID? Esiste un convertitore di tipi di dati integrato o devo creare il mio convertitore personalizzato?Converti xs: stringa in java.util.UUID in jaxb
risposta
Questo è molto più più facile da fare se si inizia con le classi Java e utilizzare le annotazioni JAXB. Tuttavia, per fare ciò utilizzando lo schema è necessario utilizzare un file di binding personalizzato. Ecco un esempio:
schema: (example.xsd)
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.com"
xmlns="http://www.example.com"
elementFormDefault="qualified">
<xs:simpleType name="uuid-type">
<xs:restriction base="xs:string">
<xs:pattern value=".*"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="example-type">
<xs:all>
<xs:element name="uuid" type="uuid-type"/>
</xs:all>
</xs:complexType>
<xs:element name="example" type="example-type"/>
</xs:schema>
Attacchi: (bindings.xjb) (Si noti che per brevità nel printMethod
e parseMethod
ho pensato che la classe UuidConverter
era nel pacchetto di default . Questi dovrebbero essere completo nella realtà. quindi, se UuidConverter
dove nel pacchetto com.foo.bar
poi i valori dovrebbero essere come com.foo.bar.UuidConverter.parse
e com.foo.bar.UuidConverter.print
<!-- Modify the schema location to be a path or url -->
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
node="/xs:schema"
schemaLocation="example.xsd">
<!-- Modify this XPATH to suit your needs! -->
<jxb:bindings node="//xs:simpleType[@name='uuid-type']">
<jxb:javaType name=" java.util.UUID"
parseMethod="UuidConverter.parse"
printMethod="UuidConverter.print"/>
</jxb:bindings>
</jxb:bindings>
UuidConver ter.java:
import java.util.UUID;
public class UuidConverter {
public static UUID parse(String xmlValue) {
return UUID.fromString(xmlValue);
}
public static String print(UUID value) {
return value.toString();
}
}
Purtroppo non riesco a indicarvi un buon riferimento perché è davvero non ben documentato. Ci sono frammenti di come funziona tutto questo nei post del blog. Mi ci sono volute un paio d'ore per fare questo lavoro la prima volta. : -/
Creare un convertitore semplice da soli:
UUID.fromString(String uuid);
http://docs.oracle.com/javase/6/docs/api/java/util/UUID.html
- 1. Jaxb: come unmarshall xs: qualsiasi parte stringa XML?
- 2. Converti JsDefined in stringa
- 3. Converti stringa in SocketAddr
- 4. Converti stringa in Uri
- 5. Converti stringa in CLLocationCoordinate2D
- 6. Converti System.Array in stringa []
- 7. Converti SVGSVGElement in stringa
- 8. Converti stringa in JsonArray
- 9. Converti stringa in LatLng
- 10. Converti int in stringa?
- 11. Converti stringa in char
- 12. Converti stringa in System.IO.Stream
- 13. Converti unichar in stringa?
- 14. Converti stringa in stringa esadecimale in C#
- 15. è java.util.UUID thread safe?
- 16. Converti stringa unicode in stringa di byte
- 17. Converti stringa RTF in stringa XAML
- 18. Converti oggetto in stringa JSON
- 19. Converti dizionario Swift in stringa
- 20. Converti byte ASCII [] in stringa
- 21. Converti stringa in oggetto dinamico
- 22. Converti parole (stringa) in Int
- 23. Converti oggetto SRE_Match in stringa
- 24. Converti una stringa in Drawable
- 25. Converti numero intero in stringa
- 26. Converti doppio in stringa C++?
- 27. Converti stringa lunga in data.frame
- 28. Converti la stringa in float?
- 29. Converti byte stringa in Java
- 30. Golang Converti stringa in io.Writer?
Dai un'occhiata a [Blaise Doughan post sugli adattatori XML] (http://blog.bdoughan.com/2010/07/xmladapter-jaxbs-secret-weapon.html). –
Apparentemente non esiste un convertitore predefinito e devo creare il mio. Quello che ho fatto è stato più o meno lo stesso delle risposte fornite di seguito. Ho avuto un bindings.xjb esistente quindi è stato un po 'più semplice modificarlo. La cosa nodo xpath ha avuto problemi su più nodi, ma questa è un'altra storia :) Grazie ragazzi. Sceglierò @mwsltn per i suoi sforzi. –