在jaxb中,如何将xsd中的字符串转换为java.util.UUID?是否有内置的数据类型转换器或者我必须创建自己的自定义转换器?
This is much如果您从 Java 类开始并使用 JAXB 注释,那么事情会变得更容易。但是,要使用架构执行此操作,您必须使用自定义绑定文件。这是一个例子:
架构:(示例.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>
绑定:(bindings.xjb)(请注意,为了简洁起见,printMethod
and parseMethod
我假设UuidConverter
类位于默认包中。这些在现实中应该是完全合格的。因此,如果UuidConverter
包装中的哪个位置com.foo.bar
那么值应该是这样的com.foo.bar.UuidConverter.parse
and 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>
UuidConverter.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();
}
}
遗憾的是,我无法向您指出一个好的参考资料,因为它确实没有很好的记录。博客文章中详细介绍了这一切是如何运作的。我第一次花了几个小时才完成这项工作。 :-/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)