javax.xml.bind

接口
异常
java.lang.Object
  继承者 javax.xml.bind.DatatypeConverter

public final class DatatypeConverter
     
extends Object

可以使用 javaType 绑定声明来自定义 XML 模式数据类型到 Java 数据类型的绑定。自定义可能涉及编写分别用来解析和打印 XML 模式数据类型的词汇表示形式的 parse 和 print 方法。不过,编写 parse 和 print 方法需要了解词汇表示形式( XML Schema Part2: Datatypes 规范),因此可能很难编写。

此类使编写 parse 和 print 方法变得更容易。它定义了静态 parse 和 print 方法,以便访问 JAXB 提供者的 parse 和 print 方法的实现。这些方法由自定义 parse 和 print 方法调用。例如,可以使用如下 parse 和 print 方法来自定义 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 中有分别对应于每个 parse 和 print 方法的静态 parse 和 print 方法。

在该类中定义的静态方法还可以用于指定 javaType 绑定声明中的 parse 和 print 方法。

JAXB 提供者需要在第一次执行编组或解组操作之前(可能是在调用 JAXBContext.newInstance 期间)的某个时间点调用 setDatatypeConverter API。要配置用于执行打印和解析功能的转换器,这一步是必需的。

XML 模式数据类型的 print 方法可以输出对于 XML 模式数据类型有效的任何词汇表示形式。如果在转换期间发生错误,则该方法将抛出 IllegalArgumentException,或者抛出 IllegalArgumentException 的子类。

从以下版本开始:
JAXB1.0
另请参见:
DatatypeConverterInterface, ParseConversionEvent, PrintConversionEvent

方法摘要
static String parseAnySimpleType(String lexicalXSDAnySimpleType)
           返回包含简单类型的词汇表示形式的字符串。
static byte[] parseBase64Binary(String lexicalXSDBase64Binary)
           将字符串参数转换为一个字节数组。
static boolean parseBoolean(String lexicalXSDBoolean)
           将字符串参数转换为一个 boolean 值。
static byte parseByte(String lexicalXSDByte)
           将字符串参数转换为一个 byte 值。
static Calendar parseDate(String lexicalXSDDate)
           将字符串参数转换为一个 Calendar 值。
static Calendar parseDateTime(String lexicalXSDDateTime)
           将字符串参数转换为一个 Calendar 值。
static BigDecimal parseDecimal(String lexicalXSDDecimal)
           将字符串参数转换为一个 BigDecimal 值。
static double parseDouble(String lexicalXSDDouble)
           将字符串参数转换为一个 double 值。
static float parseFloat(String lexicalXSDFloat)
           将字符串参数转换为一个 float 值。
static byte[] parseHexBinary(String lexicalXSDHexBinary)
           将字符串参数转换为一个字节数组。
static int parseInt(String lexicalXSDInt)
           将字符串参数转换为一个 int 值。
static BigInteger parseInteger(String lexicalXSDInteger)
           将字符串参数转换为一个 BigInteger 值。
static long parseLong(String lexicalXSDLong)
           将字符串参数转换为一个 long 值。
static QName parseQName(String lexicalXSDQName, NamespaceContext nsc)
           将字符串参数转换为一个 byte 值。
static short parseShort(String lexicalXSDShort)
           将字符串参数转换为一个 short 值。
static String parseString(String lexicalXSDString)
           将词汇 XSD 字符串参数转换为一个 String 值。
static Calendar parseTime(String lexicalXSDTime)
           将字符串参数转换为一个 Calendar 值。
static long parseUnsignedInt(String lexicalXSDUnsignedInt)
           将字符串参数转换为一个 long 值。
static int parseUnsignedShort(String lexicalXSDUnsignedShort)
           将字符串参数转换为一个 int 值。
static String printAnySimpleType(String val)
           将字符串值转换为一个字符串。
static String printBase64Binary(byte[] val)
           将字节数组转换为一个字符串。
static String printBoolean(boolean val)
           将 boolean 值转换为一个字符串。
static String printByte(byte val)
           将 byte 值转换为一个字符串。
static String printDate(Calendar val)
           将 Calendar 值转换为一个字符串。
static String printDateTime(Calendar val)
           将 Calendar 值转换为一个字符串。
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)
           将 long 值转换为一个字符串。
static String printQName(QName val, NamespaceContext nsc)
           将 QName 实例转换为一个字符串。
static String printShort(short val)
           将 short 值转换为一个字符串。
static String printString(String val)
           将字符串参数转换为一个字符串。
static String printTime(Calendar val)
           将 Calendar 值转换为一个字符串。
static String printUnsignedInt(long val)
           将 long 值转换为一个字符串。
static String printUnsignedShort(int val)
           将 int 值转换为一个字符串。
static void setDatatypeConverter(DatatypeConverterInterface converter)
          此方法仅适用于 JAXB 提供者。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

setDatatypeConverter

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

JAXB 提供者需要在允许执行任何 JAXB 客户端编组或解组操作之前的某个时间点调用此方法。要配置用于执行打印和解析功能的转换器,这一步是必需的。

重复调用此 API 是无效的,传入第一次调用中的 DatatypeConverterInterface 实例将始终用于后续调用。

参数:
converter - 实现 DatatypeConverterInterface 类的类实例,此参数不能为 null。
抛出:
IllegalArgumentException - 如果参数为 null

parseString

public static String parseString(String lexicalXSDString)

将词汇 XSD 字符串参数转换为一个 String 值。

参数:
lexicalXSDString - 包含 xsd:string 的词汇表示形式的字符串。
返回:
字符串参数表示的 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 的词汇表示形式的字符串。
返回:
字符串参数表示的 int 值。
抛出:
NumberFormatException - 如果 lexicalXSDInt 不是 int 值的有效字符串表示形式。

parseLong

public static long parseLong(String lexicalXSDLong)

将字符串参数转换为一个 long 值。

参数:
lexicalXSDLong - 包含 xsd:long 的词汇表示形式的字符串。
返回:
字符串参数表示的 long 值。
抛出:
NumberFormatException - 如果 lexicalXSDLong 不是 long 值的有效字符串表示形式。

parseShort

public static short parseShort(String lexicalXSDShort)

将字符串参数转换为一个 short 值。

参数:
lexicalXSDShort - 包含 xsd:short 的词汇表示形式的字符串。
返回:
字符串参数表示的 short 值。
抛出:
NumberFormatException - 如果 lexicalXSDShort 不是 short 值的有效字符串表示形式。

parseDecimal

public static BigDecimal parseDecimal(String lexicalXSDDecimal)

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

参数:
lexicalXSDDecimal - 包含 xsd:decimal 的词汇表示形式的字符串。
返回:
字符串参数表示的 BigDecimal 值。
抛出:
NumberFormatException - 如果 lexicalXSDDecimal 不是 BigDecimal 的有效字符串表示形式。

parseFloat

public static float parseFloat(String lexicalXSDFloat)

将字符串参数转换为一个 float 值。

参数:
lexicalXSDFloat - 包含 xsd:float 的词汇表示形式的字符串。
返回:
字符串参数表示的 float 值。
抛出:
NumberFormatException - 如果 lexicalXSDFloat 不是 float 值的有效字符串表示形式。

parseDouble

public static double parseDouble(String lexicalXSDDouble)

将字符串参数转换为一个 double 值。

参数:
lexicalXSDDouble - 包含 xsd:double 的词汇表示形式的字符串。
返回:
字符串参数表示的 double 值。
抛出:
NumberFormatException - 如果 lexicalXSDDouble 不是 double 值的有效字符串表示形式。

parseBoolean

public static boolean parseBoolean(String lexicalXSDBoolean)

将字符串参数转换为一个 boolean 值。

参数:
lexicalXSDBoolean - 包含 xsd:boolean 的词汇表示形式的字符串。
返回:
字符串参数表示的 boolean 值。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 中为 xsd:boolean 定义的词汇值空间。

parseByte

public static byte parseByte(String lexicalXSDByte)

将字符串参数转换为一个 byte 值。

参数:
lexicalXSDByte - 包含 xsd:byte 的词汇表示形式的字符串。
返回:
字符串参数表示的 byte 值。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 xsd:byte 定义的词汇值空间。

parseQName

public static QName parseQName(String lexicalXSDQName,
                               NamespaceContext nsc)

将字符串参数转换为一个 byte 值。

字符串参数 lexicalXSDQname 必须符合 XML Schema Part 2: Datatypes 规范:QName 中指定的词汇值空间。

参数:
lexicalXSDQName - 包含 xsd:QName 的词汇表示形式的字符串。
nsc - 解释 QName 中前缀的名称空间上下文。
返回:
字符串参数表示的 QName 值。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2 规范,或者 lexicalXSDQname 的名称空间前缀未绑定到 NamespaceContext nsc 中的 URI。

parseDateTime

public static Calendar parseDateTime(String lexicalXSDDateTime)

将字符串参数转换为一个 Calendar 值。

参数:
lexicalXSDDateTime - 包含 xsd:datetime 的词汇表示形式的字符串。
返回:
字符串参数表示的 Calendar 对象。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 xsd:dateTime 定义的词汇值空间。

parseBase64Binary

public static byte[] parseBase64Binary(String lexicalXSDBase64Binary)

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

参数:
lexicalXSDBase64Binary - 包含 xsd:base64Binary 的词汇表示形式的字符串。
返回:
字符串参数表示的字节数组。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 xsd:base64Binary 定义的词汇值空间。

parseHexBinary

public static byte[] parseHexBinary(String lexicalXSDHexBinary)

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

参数:
lexicalXSDHexBinary - 包含 xsd:hexBinary 的词汇表示形式的字符串。
返回:
字符串参数表示的字节数组。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 xsd:hexBinary 定义的词汇值空间。

parseUnsignedInt

public static long parseUnsignedInt(String lexicalXSDUnsignedInt)

将字符串参数转换为一个 long 值。

参数:
lexicalXSDUnsignedInt - 包含 xsd:unsignedInt 的词汇表示形式的字符串。
返回:
字符串参数表示的 long 值。
抛出:
NumberFormatException - 如果不能将字符串参数解析为 long 值。

parseUnsignedShort

public static int parseUnsignedShort(String lexicalXSDUnsignedShort)

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

参数:
lexicalXSDUnsignedShort - 包含 xsd:unsignedShort 的词汇表示形式的字符串。
返回:
字符串参数表示的 int 值。
抛出:
NumberFormatException - 如果不能将字符串参数解析为 int 值。

parseTime

public static Calendar parseTime(String lexicalXSDTime)

将字符串参数转换为一个 Calendar 值。

参数:
lexicalXSDTime - 包含 xsd:time 的词汇表示形式的字符串。
返回:
字符串参数表示的 Calendar 值。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 xsd:Time 定义的词汇值空间。

parseDate

public static Calendar parseDate(String lexicalXSDDate)

将字符串参数转换为一个 Calendar 值。

参数:
lexicalXSDDate - 包含 xsd:Date 的词汇表示形式的字符串。
返回:
字符串参数表示的 Calendar 值。
抛出:
IllegalArgumentException - 如果字符串参数不符合 XML Schema Part 2: Datatypes 为 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)

将 long 值转换为一个字符串。

参数:
val - 一个 long 值
返回:
包含 xsd:long 的词汇表示形式的字符串

printShort

public static String printShort(short val)

将 short 值转换为一个字符串。

参数:
val - 一个 short 值
返回:
包含 xsd:short 的词汇表示形式的字符串

printDecimal

public static String printDecimal(BigDecimal val)

将 BigDecimal 值转换为一个字符串。

参数:
val - 一个 BigDecimal 值
返回:
包含 xsd:decimal 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printFloat

public static String printFloat(float val)

将 float 值转换为一个字符串。

参数:
val - 一个 float 值
返回:
包含 xsd:float 的词汇表示形式的字符串

printDouble

public static String printDouble(double val)

将 double 值转换为一个字符串。

参数:
val - 一个 double 值
返回:
包含 xsd:double 的词汇表示形式的字符串

printBoolean

public static String printBoolean(boolean val)

将 boolean 值转换为一个字符串。

参数:
val - 一个 boolean 值
返回:
包含 xsd:boolean 的词汇表示形式的字符串

printByte

public static String printByte(byte val)

将 byte 值转换为一个字符串。

参数:
val - 一个 byte 值
返回:
包含 xsd:byte 的词汇表示形式的字符串

printQName

public static String printQName(QName val,
                                NamespaceContext nsc)

将 QName 实例转换为一个字符串。

参数:
val - 一个 QName 值
nsc - 解释 QName 中前缀的名称空间上下文。
返回:
包含 QName 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null、 nsc 为非 null 或 nsc.getPrefix(nsprefixFromVal) 为 null。

printDateTime

public static String printDateTime(Calendar val)

将 Calendar 值转换为一个字符串。

参数:
val - 一个 Calendar 值
返回:
包含 xsd:dateTime 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printBase64Binary

public static String printBase64Binary(byte[] val)

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

参数:
val - 一个字节数组
返回:
包含 xsd:base64Binary 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printHexBinary

public static String printHexBinary(byte[] val)

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

参数:
val - 一个字节数组
返回:
包含 xsd:hexBinary 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printUnsignedInt

public static String printUnsignedInt(long val)

将 long 值转换为一个字符串。

参数:
val - 一个 long 值
返回:
包含 xsd:unsignedInt 的词汇表示形式的字符串

printUnsignedShort

public static String printUnsignedShort(int val)

将 int 值转换为一个字符串。

参数:
val - 一个 int 值
返回:
包含 xsd:unsignedShort 的词汇表示形式的字符串

printTime

public static String printTime(Calendar val)

将 Calendar 值转换为一个字符串。

参数:
val - 一个 Calendar 值
返回:
包含 xsd:time 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printDate

public static String printDate(Calendar val)

将 Calendar 值转换为一个字符串。

参数:
val - 一个 Calendar 值
返回:
包含 xsd:date 的词汇表示形式的字符串
抛出:
IllegalArgumentException - 如果 val 为 null。

printAnySimpleType

public static String printAnySimpleType(String val)

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

参数:
val - 字符串值
返回:
包含 xsd:AnySimpleType 的词汇表示形式的字符串