public final class DatatypeConverter extends Object
可以使用javaType绑定声明来自定义XML模式数据类型与Java数据类型的绑定。 自定义可以包括编写解析和打印方法,以分析和打印XML模式数据类型的词法表示。 然而,写解析和打印方法需要知识词汇表示( XML Schema Part2: Datatypes specification ),因此可能难以写入。
这个类可以更容易地编写解析和打印方法。 它定义了静态解析和打印方法,可以访问JAXB提供程序的解析和打印方法的实现。 这些方法通过自定义解析和打印方法来调用。 例如,可以使用解析和打印方法将xsd:dateTime绑定到long,如下所示:
// Customized parse method public long myParseCal( String dateTimeString ) { java.util.Calendar cal = DatatypeConverter.parseDateTime(dateTimeString); long longval = convert_calendar_to_long(cal); //application specific return longval; } // Customized print method public String myPrintCal( Long longval ) { java.util.Calendar cal = convert_long_to_calendar(longval) ; //application specific String dateTimeString = DatatypeConverter.printDateTime(cal); return dateTimeString; }
有分别在对应于每个parse和打印方法的静态解析和打印方法DatatypeConverterInterface
。
类中定义的静态方法也可用于在javaType绑定声明中指定解析或打印方法。
JAXB提供商需要在第一个元帅或拆散操作之前的某个时候调用setDatatypeConverter
api(可能在调用JAXBContext.newInstance时)。 此步骤是配置应用于执行打印和解析功能的转换器所必需的。
XML模式数据类型的打印方法可以输出关于XML模式数据类型有效的任何词法表示。 如果在转换期间遇到错误,则该方法必须抛出IllegalArgumentException或IllegalArgumentException的子类。
DatatypeConverterInterface
, ParseConversionEvent
, PrintConversionEvent
Modifier and Type | Method and Description |
---|---|
static String |
parseAnySimpleType(String lexicalXSDAnySimpleType)
返回一个包含简单类型的词法表示的字符串。
|
static byte[] |
parseBase64Binary(String lexicalXSDBase64Binary)
将字符串参数转换为字节数组。
|
static boolean |
parseBoolean(String lexicalXSDBoolean)
将字符串参数转换为布尔值。
|
static byte |
parseByte(String lexicalXSDByte)
将字符串参数转换为字节值。
|
static Calendar |
parseDate(String lexicalXSDDate)
将字符串参数转换为日历值。
|
static Calendar |
parseDateTime(String lexicalXSDDateTime)
将字符串参数转换为日历值。
|
static BigDecimal |
parseDecimal(String lexicalXSDDecimal)
将字符串参数转换为BigDecimal值。
|
static double |
parseDouble(String lexicalXSDDouble)
将字符串参数转换为双精度值。
|
static float |
parseFloat(String lexicalXSDFloat)
将字符串参数转换为浮点值。
|
static byte[] |
parseHexBinary(String lexicalXSDHexBinary)
将字符串参数转换为字节数组。
|
static int |
parseInt(String lexicalXSDInt)
将字符串参数转换为int值。
|
static BigInteger |
parseInteger(String lexicalXSDInteger)
将字符串参数转换为BigInteger值。
|
static long |
parseLong(String lexicalXSDLong)
将字符串参数转换为长整型值。
|
static QName |
parseQName(String lexicalXSDQName, NamespaceContext nsc)
将字符串参数转换为字节值。
|
static short |
parseShort(String lexicalXSDShort)
将字符串参数转换为短值。
|
static String |
parseString(String lexicalXSDString)
将词法XSD字符串参数转换为字符串值。
|
static Calendar |
parseTime(String lexicalXSDTime)
将字符串参数转换为日历值。
|
static long |
parseUnsignedInt(String lexicalXSDUnsignedInt)
将字符串参数转换为长整型值。
|
static int |
parseUnsignedShort(String lexicalXSDUnsignedShort)
将字符串参数转换为int值。
|
static String |
printAnySimpleType(String val)
将字符串值转换为字符串。
|
static String |
printBase64Binary(byte[] val)
将字节数组转换为字符串。
|
static String |
printBoolean(boolean val)
将布尔值转换为字符串。
|
static String |
printByte(byte val)
将字节值转换为字符串。
|
static String |
printDate(Calendar val)
将日历值转换为字符串。
|
static String |
printDateTime(Calendar val)
将日历值转换为字符串。
|
static String |
printDecimal(BigDecimal val)
将BigDecimal值转换为字符串。
|
static String |
printDouble(double val)
将double值转换为字符串。
|
static String |
printFloat(float val)
将float值转换为字符串。
|
static String |
printHexBinary(byte[] val)
将字节数组转换为字符串。
|
static String |
printInt(int val)
将int值转换为字符串。
|
static String |
printInteger(BigInteger val)
将BigInteger值转换为字符串。
|
static String |
printLong(long val)
将长整型值转换为字符串。
|
static String |
printQName(QName val, NamespaceContext nsc)
将QName实例转换为字符串。
|
static String |
printShort(short val)
将一个简短的值转换成一个字符串。
|
static String |
printString(String val)
将字符串参数转换为字符串。
|
static String |
printTime(Calendar val)
将日历值转换为字符串。
|
static String |
printUnsignedInt(long val)
将一个长的值转换成一个字符串。
|
static String |
printUnsignedShort(int val)
将int值转换为字符串。
|
static void |
setDatatypeConverter(DatatypeConverterInterface converter)
此方法仅供JAXB提供者使用。
|
public static void setDatatypeConverter(DatatypeConverterInterface converter)
在允许任何JAXB客户端组织或解组操作发生之前,需要JAXB提供程序在某一时刻调用此方法。 这是配置应用于执行打印和解析转换的数据类型转换器所必需的。
重复调用此api将无效 - 传入第一次调用的DatatypeConverterInterface实例是从那时起使用的。
converter
- 实现DatatypeConverterInterface类的类的实例 - 此参数不能为空。
IllegalArgumentException
- 如果参数为空
SecurityException
- 如果SecurityManager
负责拒绝访问设置数据类型转换器。
JAXBPermission
public static String parseString(String lexicalXSDString)
将词法XSD字符串参数转换为字符串值。
lexicalXSDString
- 包含xsd:string的词法表示形式的字符串。
public static BigInteger parseInteger(String lexicalXSDInteger)
将字符串参数转换为BigInteger值。
lexicalXSDInteger
- 包含xsd:integer的词法表示形式的字符串。
NumberFormatException
- lexicalXSDInteger
不是BigInteger
值的有效字符串表示。
public static int parseInt(String lexicalXSDInt)
将字符串参数转换为int值。
lexicalXSDInt
- 包含xsd:int的词法表示形式的字符串。
NumberFormatException
-
lexicalXSDInt
不是
int
值的有效字符串表示。
public static long parseLong(String lexicalXSDLong)
将字符串参数转换为长整型值。
lexicalXSDLong
- 包含xsd:long的词法表示形式的字符串。
NumberFormatException
-
lexicalXSDLong
不是
long
值的有效字符串表示。
public static short parseShort(String lexicalXSDShort)
将字符串参数转换为短值。
lexicalXSDShort
- 包含xsd:short的词法表示形式的字符串。
NumberFormatException
-
lexicalXSDShort
不是
short
值的有效字符串表示。
public static BigDecimal parseDecimal(String lexicalXSDDecimal)
将字符串参数转换为BigDecimal值。
lexicalXSDDecimal
- 包含xsd:decimal的词法表示形式的字符串。
NumberFormatException
- lexicalXSDDecimal
不是lexicalXSDDecimal
的有效字符串表示 。
public static float parseFloat(String lexicalXSDFloat)
将字符串参数转换为浮点值。
lexicalXSDFloat
- 包含xsd:float的词法表示形式的字符串。
NumberFormatException
-
lexicalXSDFloat
不是
float
值的有效字符串表示。
public static double parseDouble(String lexicalXSDDouble)
将字符串参数转换为双精度值。
lexicalXSDDouble
- 包含xsd:double的词法表示形式的字符串。
NumberFormatException
-
lexicalXSDDouble
不是
double
值的有效字符串表示。
public static boolean parseBoolean(String lexicalXSDBoolean)
将字符串参数转换为布尔值。
lexicalXSDBoolean
- 包含xsd:boolean的词法表示的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd:boolean的数据类型。
public static byte parseByte(String lexicalXSDByte)
将字符串参数转换为字节值。
lexicalXSDByte
- 包含xsd:byte的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd:byte的数据类型。
public static QName parseQName(String lexicalXSDQName, NamespaceContext nsc)
将字符串参数转换为字节值。
字符串参数lexicalXSDQname必须符合指定的词汇值空间XML Schema Part 2:Datatypes specification:QNames
lexicalXSDQName
- 包含xsd:QName的词法表示形式的字符串。
nsc
- 用于解释QName中前缀的命名空间上下文。
IllegalArgumentException
- 如果字符串参数不符合XML模式第2部分规范,或者命名空间前缀
lexicalXSDQname未绑定到NamespaceContext
nsc中的URI。
public static Calendar parseDateTime(String lexicalXSDDateTime)
将字符串参数转换为日历值。
lexicalXSDDateTime
- 包含xsd:datetime的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式第2部分中定义的词法值空间:xsd:datetime的数据类型。
public static byte[] parseBase64Binary(String lexicalXSDBase64Binary)
将字符串参数转换为字节数组。
lexicalXSDBase64Binary
- 包含xsd:base64Binary的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd的数据类型:base64Binary
public static byte[] parseHexBinary(String lexicalXSDHexBinary)
将字符串参数转换为字节数组。
lexicalXSDHexBinary
- 包含xsd:hexBinary的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd的数据类型:hexBinary。
public static long parseUnsignedInt(String lexicalXSDUnsignedInt)
将字符串参数转换为长整型值。
lexicalXSDUnsignedInt
- 包含xsd:unsignedInt的词法表示形式的字符串。
NumberFormatException
- 如果字符串参数无法解析为
long值。
public static int parseUnsignedShort(String lexicalXSDUnsignedShort)
将字符串参数转换为int值。
lexicalXSDUnsignedShort
- 包含xsd:unsignedShort的词法表示形式的字符串。
NumberFormatException
- 如果字符串参数无法解析为
int值。
public static Calendar parseTime(String lexicalXSDTime)
将字符串参数转换为日历值。
lexicalXSDTime
- 包含xsd:time的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd:Time的数据类型。
public static Calendar parseDate(String lexicalXSDDate)
将字符串参数转换为日历值。
lexicalXSDDate
- 包含xsd:Date的词法表示形式的字符串。
IllegalArgumentException
- 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd:Date的数据类型。
public static String parseAnySimpleType(String lexicalXSDAnySimpleType)
返回一个包含简单类型的词法表示的字符串。
lexicalXSDAnySimpleType
- 一个包含简单类型的词法表示的字符串。
public static String printString(String val)
将字符串参数转换为字符串。
val
- 一个字符串值。
public static String printInteger(BigInteger val)
将BigInteger值转换为字符串。
val
- BigInteger值
IllegalArgumentException
-
val为空。
public static String printInt(int val)
将int值转换为字符串。
val
- 一个int值
public static String printLong(long val)
将长整型值转换为字符串。
val
- 一个长的价值
public static String printShort(short val)
将一个简短的值转换成一个字符串。
val
- 一个简短的数值
public static String printDecimal(BigDecimal val)
将BigDecimal值转换为字符串。
val
- 一个BigDecimal值
IllegalArgumentException
-
val为空。
public static String printFloat(float val)
将float值转换为字符串。
val
- 浮点值
public static String printDouble(double val)
将double值转换为字符串。
val
- 一个双重值
public static String printBoolean(boolean val)
将布尔值转换为字符串。
val
- 一个布尔值
public static String printByte(byte val)
将字节值转换为字符串。
val
- 字节值
public static String printQName(QName val, NamespaceContext nsc)
将QName实例转换为字符串。
val
- QName值
nsc
- 用于解释QName中前缀的命名空间上下文。
IllegalArgumentException
- 如果
val为空,或者如果
nsc为非空,或
nsc.getPrefix(nsprefixFromVal)为空。
public static String printDateTime(Calendar val)
将日历值转换为字符串。
val
- 日历值
IllegalArgumentException
- 如果
val为空。
public static String printBase64Binary(byte[] val)
将字节数组转换为字符串。
val
- 一个字节数组
IllegalArgumentException
- 如果
val为空。
public static String printHexBinary(byte[] val)
将字节数组转换为字符串。
val
- 一个字节数组
IllegalArgumentException
- 如果
val为空。
public static String printUnsignedInt(long val)
将一个长的值转换成一个字符串。
val
- 一个长的价值
public static String printUnsignedShort(int val)
将int值转换为字符串。
val
- 一个int值
public static String printTime(Calendar val)
将日历值转换为字符串。
val
- 日历值
IllegalArgumentException
- 如果
val为空。
public static String printDate(Calendar val)
将日历值转换为字符串。
val
- 日历值
IllegalArgumentException
- 如果
val为空。