Module  java.xml.bind
软件包  javax.xml.bind

Class DatatypeConverter



  • 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;
        }
        

    DatatypeConverterInterface分别有与每个解析和打印方法相对应的静态解析和打印方法。

    类中定义的静态方法也可用于在javaType绑定声明中指定解析或打印方法。

    JAXB提供商需要在第一个元帅或解散操作之前的某个时刻(也许在调用JAXBContext.newInstance)期间调用setDatatypeConverter api。 此步骤是配置应用于执行打印和解析功能的转换器所必需的。

    XML模式数据类型的打印方法可以输出关于XML模式数据类型有效的任何词法表示。 如果在转换期间遇到错误,则该方法必须抛出IllegalArgumentException或IllegalArgumentException的子类。

    从以下版本开始:
    1.6,JAXB 1.0
    另请参见:
    DatatypeConverterInterfaceParseConversionEventPrintConversionEvent
    • 方法详细信息

      • setDatatypeConverter

        public static void setDatatypeConverter​(DatatypeConverterInterface converter)
        此方法仅供JAXB提供者使用。

        在允许任何JAXB客户端组织或解组操作发生之前,需要JAXB提供程序在某一时刻调用此方法。 这是配置应用于执行打印和解析转换的数据类型转换器所必需的。

        重复调用此api将无效 - 传入第一次调用的DatatypeConverterInterface实例是从那时起使用的。

        参数
        converter - 实现DatatypeConverterInterface类的类的实例 - 此参数不能为空。
        异常
        IllegalArgumentException - 如果参数为空
        SecurityException - 如果SecurityManager负责拒绝访问设置数据类型转换器。
        另请参见:
        JAXBPermission
      • parseString

        public static String parseString​(String lexicalXSDString)

        将词法XSD字符串参数转换为字符串值。

        参数
        lexicalXSDString - 包含xsd:string的词法表示形式的字符串。
        结果
        由字符串参数表示的字符串值。
      • parseInteger

        public static BigInteger parseInteger​(String lexicalXSDInteger)

        将字符串参数转换为BigInteger值。

        参数
        lexicalXSDInteger - 包含xsd:integer的词法表示形式的字符串。
        结果
        由字符串参数表示的BigInteger值。
        异常
        NumberFormatException - lexicalXSDInteger不是BigInteger值的有效字符串表示。
      • parseInt

        public static int parseInt​(String lexicalXSDInt)

        将字符串参数转换为int值。

        参数
        lexicalXSDInt - 包含xsd:int的词法表示形式的字符串。
        结果
        由string参数表示的int值。
        异常
        NumberFormatException - lexicalXSDInt不是 int值的有效字符串表示。
      • parseLong

        public static long parseLong​(String lexicalXSDLong)

        将字符串参数转换为长整型值。

        参数
        lexicalXSDLong - 包含xsd:long的词法表示形式的字符串。
        结果
        由字符串参数表示的长值。
        异常
        NumberFormatException - lexicalXSDLong不是 long值的有效字符串表示。
      • parseShort

        public static short parseShort​(String lexicalXSDShort)

        将字符串参数转换为短值。

        参数
        lexicalXSDShort - 包含xsd:short的词法表示形式的字符串。
        结果
        由字符串参数表示的短值。
        异常
        NumberFormatException - lexicalXSDShort不是 short值的有效字符串表示。
      • parseDecimal

        public static BigDecimal parseDecimal​(String lexicalXSDDecimal)

        将字符串参数转换为BigDecimal值。

        参数
        lexicalXSDDecimal - 包含xsd:decimal的词法表示形式的字符串。
        结果
        由字符串参数表示的BigDecimal值。
        异常
        NumberFormatException - lexicalXSDDecimal不是lexicalXSDDecimal的有效字符串表示形式
      • parseFloat

        public static float parseFloat​(String lexicalXSDFloat)

        将字符串参数转换为浮点值。

        参数
        lexicalXSDFloat - 包含xsd:float的词法表示形式的字符串。
        结果
        由字符串参数表示的浮点值。
        异常
        NumberFormatException - lexicalXSDFloat不是 float值的有效字符串表示。
      • parseDouble

        public static double parseDouble​(String lexicalXSDDouble)

        将字符串参数转换为双精度值。

        参数
        lexicalXSDDouble - 包含xsd:double的词法表示形式的字符串。
        结果
        由字符串参数表示的double值。
        异常
        NumberFormatException - lexicalXSDDouble不是 double值的有效字符串表示。
      • parseBoolean

        public static boolean parseBoolean​(String lexicalXSDBoolean)

        将字符串参数转换为布尔值。

        参数
        lexicalXSDBoolean - 包含xsd:boolean的词法表示形式的字符串。
        结果
        由字符串参数表示的布尔值。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd:boolean的数据类型。
      • parseByte

        public static byte parseByte​(String lexicalXSDByte)

        将字符串参数转换为字节值。

        参数
        lexicalXSDByte - 包含xsd:byte的词法表示形式的字符串。
        结果
        由字符串参数表示的字节值。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML Schema第2部分定义的词法值空间:xsd:byte的数据类型。
      • parseQName

        public static QName parseQName​(String lexicalXSDQName,
                                       NamespaceContext nsc)

        将字符串参数转换为字节值。

        字符串参数lexicalXSDQname必须符合XML Schema Part 2:Datatypes specification:QNames指定的词汇值空间

        参数
        lexicalXSDQName - 包含xsd:QName的词法表示形式的字符串。
        nsc - 用于解释QName中的前缀的命名空间上下文。
        结果
        由字符串参数表示的QName值。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式第2部分规范,或者名称空间前缀为 lexicalXSDQname未绑定到NamespaceContext中的URI nsc
      • parseDateTime

        public static Calendar parseDateTime​(String lexicalXSDDateTime)

        将字符串参数转换为日历值。

        参数
        lexicalXSDDateTime - 包含xsd:datetime的词法表示形式的字符串。
        结果
        由字符串参数表示的日历对象。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式第2部分中定义的词法值空间:xsd:datetime的数据类型。
      • parseBase64Binary

        public static byte[] parseBase64Binary​(String lexicalXSDBase64Binary)

        将字符串参数转换为字节数组。

        参数
        lexicalXSDBase64Binary - 包含xsd:base64Binary的词法表示形式的字符串。
        结果
        由字符串参数表示的字节数组。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd的数据类型:base64Binary
      • parseHexBinary

        public static byte[] parseHexBinary​(String lexicalXSDHexBinary)

        将字符串参数转换为字节数组。

        参数
        lexicalXSDHexBinary - 包含xsd:hexBinary的词法表示形式的字符串。
        结果
        由字符串参数表示的字节数组。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式中定义的词法值空间第2部分:xsd的数据类型:hexBinary。
      • parseUnsignedInt

        public static long parseUnsignedInt​(String lexicalXSDUnsignedInt)

        将字符串参数转换为长整型值。

        参数
        lexicalXSDUnsignedInt - 包含xsd:unsignedInt的词法表示形式的字符串。
        结果
        由字符串参数表示的长值。
        异常
        NumberFormatException - 如果字符串参数无法解析为 long值。
      • parseUnsignedShort

        public static int parseUnsignedShort​(String lexicalXSDUnsignedShort)

        将字符串参数转换为int值。

        参数
        lexicalXSDUnsignedShort - 包含xsd:unsignedShort的词法表示形式的字符串。
        结果
        由string参数表示的int值。
        异常
        NumberFormatException - 如果字符串参数无法解析为 int值。
      • parseTime

        public static Calendar parseTime​(String lexicalXSDTime)

        将字符串参数转换为日历值。

        参数
        lexicalXSDTime - 包含xsd:time的词法表示形式的字符串。
        结果
        由字符串参数表示的日历值。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML Schema第2部分定义的词法值空间:xsd:Time的数据类型。
      • parseDate

        public static Calendar parseDate​(String lexicalXSDDate)

        将字符串参数转换为日历值。

        参数
        lexicalXSDDate - 包含xsd:Date的词法表示形式的字符串。
        结果
        由字符串参数表示的日历值。
        异常
        IllegalArgumentException - 如果字符串参数不符合XML模式第2部分定义的词法值空间:xsd:Date的数据类型。
      • parseAnySimpleType

        public static String parseAnySimpleType​(String lexicalXSDAnySimpleType)

        返回一个包含简单类型的词法表示的字符串。

        参数
        lexicalXSDAnySimpleType - 一个包含简单类型的词法表示的字符串。
        结果
        包含简单类型的词法表示的字符串。
      • printString

        public static String printString​(String val)

        将字符串参数转换为字符串。

        参数
        val - 字符串值。
        结果
        包含xsd:string的词法表示形式的字符串。
      • printInteger

        public static String printInteger​(BigInteger val)

        将BigInteger值转换为字符串。

        参数
        val - BigInteger值
        结果
        包含xsd:integer的词法表示形式的字符串
        异常
        IllegalArgumentException - val为null。
      • printInt

        public static String printInt​(int val)

        将int值转换为字符串。

        参数
        val - 一个int值
        结果
        包含xsd:int的词法表示形式的字符串
      • printLong

        public static String printLong​(long val)

        将长整型值转换为字符串。

        参数
        val - 一个长的价值
        结果
        包含xsd:long的词法表示的字符串
      • printShort

        public static String printShort​(short val)

        将一个简短的值转换成一个字符串。

        参数
        val - 一个简短的数值
        结果
        包含xsd:short的词法表示形式的字符串
      • printDecimal

        public static String printDecimal​(BigDecimal val)

        将BigDecimal值转换为字符串。

        参数
        val - 一个BigDecimal值
        结果
        包含xsd:decimal的词法表示形式的字符串
        异常
        IllegalArgumentException - val为空。
      • printFloat

        public static String printFloat​(float val)

        将float值转换为字符串。

        参数
        val - 浮点值
        结果
        包含xsd:float的词法表示形式的字符串
      • printDouble

        public static String printDouble​(double val)

        将double值转换为字符串。

        参数
        val - 双重值
        结果
        包含xsd:double的词法表示形式的字符串
      • printBoolean

        public static String printBoolean​(boolean val)

        将布尔值转换为字符串。

        参数
        val - 一个布尔值
        结果
        包含xsd:boolean的词法表示的字符串
      • printByte

        public static String printByte​(byte val)

        将字节值转换为字符串。

        参数
        val - 一个字节值
        结果
        包含xsd:byte的词法表示形式的字符串
      • printQName

        public static String printQName​(QName val,
                                        NamespaceContext nsc)

        将QName实例转换为字符串。

        参数
        val - QName值
        nsc - 用于解释QName中的前缀的命名空间上下文。
        结果
        一个包含QName的词法表示的字符串
        异常
        IllegalArgumentException - 如果 val为空,或者如果 nsc为非空,或 nsc.getPrefix(nsprefixFromVal)为空。
      • printDateTime

        public static String printDateTime​(Calendar val)

        将日历值转换为字符串。

        参数
        val - 日历值
        结果
        包含xsd:dateTime的词法表示形式的字符串
        异常
        IllegalArgumentException - 如果 val为空。
      • printBase64Binary

        public static String printBase64Binary​(byte[] val)

        将字节数组转换为字符串。

        参数
        val - 字节数组
        结果
        包含xsd:base64Binary的词法表示形式的字符串
        异常
        IllegalArgumentException - 如果 val为空。
      • printHexBinary

        public static String printHexBinary​(byte[] val)

        将字节数组转换为字符串。

        参数
        val - 一个字节数组
        结果
        包含xsd:hexBinary的词法表示形式的字符串
        异常
        IllegalArgumentException - 如果 val为空。
      • printUnsignedInt

        public static String printUnsignedInt​(long val)

        将一个长的值转换成一个字符串。

        参数
        val - 一个长的价值
        结果
        包含xsd:unsignedInt的词法表示形式的字符串
      • printUnsignedShort

        public static String printUnsignedShort​(int val)

        将int值转换为字符串。

        参数
        val - 一个int值
        结果
        包含xsd:unsignedShort的词法表示形式的字符串
      • printTime

        public static String printTime​(Calendar val)

        将日历值转换为字符串。

        参数
        val - 日历值
        结果
        包含xsd:time的词法表示形式的字符串
        异常
        IllegalArgumentException - 如果 val为空。
      • printDate

        public static String printDate​(Calendar val)

        将日历值转换为字符串。

        参数
        val - 日历值
        结果
        包含xsd:date的词法表示形式的字符串
        异常
        IllegalArgumentException - 如果 val为空。
      • printAnySimpleType

        public static String printAnySimpleType​(String val)

        将字符串值转换为字符串。

        参数
        val - 字符串值
        结果
        包含xsd:AnySimpleType的词法表示形式的字符串