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为空。 
            Submit a bug or feature 
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
 Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.