javax.xml.datatype

异常
java.lang.Object
  继承者 javax.xml.datatype.DatatypeFactory

public abstract class DatatypeFactory
     
extends Object

创建新 javax.xml.datatype Object 的工厂,创建的对象可提供 XML 和 Java Object 之间的映射。

newInstance() 用于创建新的 DatatypeFactory。按下列顺序使用以下实现解析机制:

  1. 如果 DATATYPEFACTORY_PROPERTY 指定的系统属性 "javax.xml.datatype.DatatypeFactory" 存在,则实例化具有属性值名称的类。将实例化进程中抛出的任何异常包装为 DatatypeConfigurationException
  2. 如果文件 ${JAVA_HOME}/lib/jaxp.properties 存在,则在 Properties Object 中加载它。然后查询 Properties Object,以获取前面步骤中的文档介绍的属性,并按照前面步骤中文档的介绍进行处理。
  3. 使用服务解析机制,例如 META-INF/services/java.xml.datatype.DatatypeFactory。将实例化进程中抛出的任何异常包装为 DatatypeConfigurationException
  4. 最终机制将尝试实例化 DATATYPEFACTORY_IMPLEMENTATION_CLASS 指定的 Class。实例化进程中抛出的任何异常将被包装为 DatatypeConfigurationException

从以下版本开始:
1.5

字段摘要
static String DATATYPEFACTORY_IMPLEMENTATION_CLASS
          JSR 206: Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。
static String DATATYPEFACTORY_PROPERTY
          JSR 206:Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。
 
构造方法摘要
protected DatatypeFactory()
          受保护的构造方法,包外无法实例化。
 
方法摘要
abstract  Duration newDuration(boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)
          获取 Duration 的新实例,该 Duration 根据 isPositive、years、months、days、hours、minutes、seconds 的值确定。
 Duration newDuration(boolean isPositive, int years, int months, int days, int hours, int minutes, int seconds)
          获取 Duration 的新实例,该 Duration 根据 isPositive、years、months、days、hours、minutes、seconds 的值确定。
abstract  Duration newDuration(long durationInMilliSeconds)
          获取新的 Duration 实例,它将 Duration 指定为毫秒。
abstract  Duration newDuration(String lexicalRepresentation)
          获取新的 Duration 实例,它根据 XML 模式 1.0 第 3.2.6.1 节中的定义将 Duration 指定为其字符串表示形式 "PnYnMnDTnHnMnS"。
 Duration newDurationDayTime(boolean isPositive, BigInteger day, BigInteger hour, BigInteger minute, BigInteger second)
          根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 dayhourminutesecond 创建类型为 xdt:dayTimeDurationDuration
 Duration newDurationDayTime(boolean isPositive, int day, int hour, int minute, int second)
          根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 dayhourminutesecond 创建类型为 xdt:dayTimeDurationDuration
 Duration newDurationDayTime(long durationInMilliseconds)
          使用 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中定义的指定毫秒创建类型为 xdt:dayTimeDurationDuration
 Duration newDurationDayTime(String lexicalRepresentation)
          通过解析其 String 表示形式 "PnDTnHnMnS"(XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration)创建类型为 xdt:dayTimeDurationDuration
 Duration newDurationYearMonth(boolean isPositive, BigInteger year, BigInteger month)
          根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 yearmonth 创建类型为 xdt:yearMonthDurationDuration
 Duration newDurationYearMonth(boolean isPositive, int year, int month)
          根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 yearmonth 创建类型为 xdt:yearMonthDurationDuration
 Duration newDurationYearMonth(long durationInMilliseconds)
          根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定毫秒创建类型为 xdt:yearMonthDurationDuration
 Duration newDurationYearMonth(String lexicalRepresentation)
          通过解析其 String 表示形式 "PnYnM"(XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration)创建类型为 xdt:yearMonthDurationDuration
static DatatypeFactory newInstance()
          获取新的 DatatypeFactory 实例。
static DatatypeFactory newInstance(String factoryClassName, ClassLoader classLoader)
          从类名称中获取新的 DatatypeFactory 实例。
abstract  XMLGregorianCalendar newXMLGregorianCalendar()
          创建新的 XMLGregorianCalendar 实例。
abstract  XMLGregorianCalendar newXMLGregorianCalendar(BigInteger year, int month, int day, int hour, int minute, int second, BigDecimal fractionalSecond, int timezone)
          W3C XML 模式 1.0 推荐考虑完整值空间的构造方法,该方法用于 xsd:dateTime 和相关的内置数据类型。
abstract  XMLGregorianCalendar newXMLGregorianCalendar(GregorianCalendar cal)
          根据 GregorianCalendar 创建 XMLGregorianCalendar
 XMLGregorianCalendar newXMLGregorianCalendar(int year, int month, int day, int hour, int minute, int second, int millisecond, int timezone)
          java.util.GregorianCalendar 实例需要转换为 XMLGregorianCalendar 实例的值空间的构造方法。
abstract  XMLGregorianCalendar newXMLGregorianCalendar(String lexicalRepresentation)
          通过将字符串解析为词汇表示形式,创建新的 XMLGregorianCalendar。
 XMLGregorianCalendar newXMLGregorianCalendarDate(int year, int month, int day, int timezone)
          创建 XML 模式内置数据类型 dateg* 的 Java 表示形式。
 XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, BigDecimal fractionalSecond, int timezone)
          创建 XML 模式内置数据类型 time 的 Java 实例。
 XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int timezone)
          创建 XML 模式内置数据类型 time 的 Java 实例。
 XMLGregorianCalendar newXMLGregorianCalendarTime(int hours, int minutes, int seconds, int milliseconds, int timezone)
          创建 XML 模式内置数据类型 time 的 Java 实例。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

DATATYPEFACTORY_PROPERTY

public static final String DATATYPEFACTORY_PROPERTY

JSR 206:Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。

默认值为 javax.xml.datatype.DatatypeFactory

另请参见:
常量字段值

DATATYPEFACTORY_IMPLEMENTATION_CLASS

public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS

JSR 206: Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。

如果其他实现解析机制都没有成功,则实现者应该指定将被实例化的恰当类的名称。

用户不应该引用此字段;该字段只用来记录工厂实现详细信息。

构造方法详细信息

DatatypeFactory

protected DatatypeFactory()

受保护的构造方法,包外无法实例化。

使用 newInstance() 创建 DatatypeFactory

方法详细信息

newInstance

public static DatatypeFactory newInstance()
                                   throws DatatypeConfigurationException

获取新的 DatatypeFactory 实例。

实现解析机制定义在此 Class 的文档中。

返回:
新的 DatatypeFactory 实例
抛出:
DatatypeConfigurationException - 如果该实现不可用,或者无法实例化。
另请参见:
newInstance(String factoryClassName, ClassLoader classLoader)

newInstance

public static DatatypeFactory newInstance(String factoryClassName,
                                          ClassLoader classLoader)
                                   throws DatatypeConfigurationException

从类名称中获取新的 DatatypeFactory 实例。此函数在类路径中有多个提供者时很有用。它可以对应用程序提供更多的控制,因为它可以指定应该加载哪个提供者。

在应用程序获取对 DatatypeFactory 的引用后,它可以使用工厂来配置和获取数据类型实例。

疑难解答提示

设置 jaxp.debug 系统属性将导致此方法将许多调试消息打印到 System.err,这些消息说明了正在执行的操作以及何处可以找到它。

如有问题,可以尝试使用以下代码:

 java -Djaxp.debug=1 YourProgram ....
 

参数:
factoryClassName - 提供 javax.xml.datatype.DatatypeFactory 实现的完全限定工厂类名称。
classLoader - 用来加载工厂类的 ClassLoader。如果该参数为 null,则使用当前 Thread 的上下文类加载器来加载工厂类。
返回:
新的 DatatypeFactory 实例
抛出:
DatatypeConfigurationException - 如果 factoryClassNamenull,或者无法加载和实例化工厂类。
从以下版本开始:
1.6
另请参见:
newInstance()

newDuration

public abstract Duration newDuration(String lexicalRepresentation)

获取新的 Duration 实例,它根据 XML 模式 1.0 第 3.2.6.1 节中的定义将 Duration 指定为其字符串表示形式 "PnYnMnDTnHnMnS"。

XML 模式第二部分 Datatypes 中的 3.2.6 节 duration 将持续时间定义如下:

持续时间表示某一时间段。持续时间的值空间是六维空间,其中坐标分别指定 [ISO 8601] 的第 5.5.3.2 节中定义的 Gregorian year、month、day、hour、minute 和 second 组件。这些组件根据其重要性按其出现顺序(即 year、month、day、hour、minute、second)排序。

六个值都可以通过创建的 Duration 设置和获得

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

参数:
lexicalRepresentation - DurationString 表示形式。
返回:
通过解析 lexicalRepresentation 创建的新 Duration
抛出:
IllegalArgumentException - 如果 lexicalRepresentation 不是 Duration 的有效表示形式。
UnsupportedOperationException - 如果实现无法支持请求值。
NullPointerException - 如果 lexicalRepresentationnull

newDuration

public abstract Duration newDuration(long durationInMilliSeconds)

获取新的 Duration 实例,它将 Duration 指定为毫秒。

XML 模式第二部分 Datatypes 中的 3.2.6 节将持续时间定义为:

持续时间表示某一时间段。持续时间的值空间是六维空间,其中坐标分别指定 [ISO 8601] 的第 5.5.3.2 节中定义的 Gregorian year、month、day、hour、minute 和 second 组件。这些组件根据其重要性按其出现顺序(即 year、month、day、hour、minute 和 second)排序。

六个值都可以通过计算指定毫秒的值来设置,通过创建的 Durationget 方法获得。该值符合以下规范并由其定义:

通过 GregorianCalendar 使用的历元开始时间定义默认开始实例:即 Calendar.YEAR = 1970、Calendar.MONTH = Calendar.JANUARYCalendar.DATE = 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY,闰年会有不同的天数,所以 Duration.getMonths()Duration.getDays() 的结果都会受到影响。

参数:
durationInMilliSeconds - 要创建的 Duration,以毫秒为单位。
返回:
表示 durationInMilliSeconds 的新 Duration

newDuration

public abstract Duration newDuration(boolean isPositive,
                                     BigInteger years,
                                     BigInteger months,
                                     BigInteger days,
                                     BigInteger hours,
                                     BigInteger minutes,
                                     BigDecimal seconds)

获取 Duration 的新实例,该 Duration 根据 isPositive、years、months、days、hours、minutes、seconds 的值确定。

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

null 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
years - 此 Duration 的年
months - 此 Duration 的月
days - 此 Duration 的日
hours - 此 Duration 的时
minutes - 此 Duration 的分
seconds - 此 Duration 的秒
返回:
从指定的值创建的新 Duration
抛出:
IllegalArgumentException - 如果值不是 Duration 的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
UnsupportedOperationException - 如果实现无法支持请求值。

newDuration

public Duration newDuration(boolean isPositive,
                            int years,
                            int months,
                            int days,
                            int hours,
                            int minutes,
                            int seconds)

获取 Duration 的新实例,该 Duration 根据 isPositive、years、months、days、hours、minutes、seconds 的值确定。

DatatypeConstants.FIELD_UNDEFINED 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
years - 此 Duration 的年
months - 此 Duration 的月
days - 此 Duration 的日
hours - 此 Duration 的时
minutes - 此 Duration 的分
seconds - 此 Duration 的秒
返回:
根据指定值创建的新 Duration
抛出:
IllegalArgumentException - 如果值不是 Duration 的有效表示形式:如果任一字段为负。
另请参见:
newDuration( boolean isPositive, BigInteger years, BigInteger months, BigInteger days, BigInteger hours, BigInteger minutes, BigDecimal seconds)

newDurationDayTime

public Duration newDurationDayTime(String lexicalRepresentation)

通过解析其 String 表示形式 "PnDTnHnMnS"(XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration)创建类型为 xdt:dayTimeDurationDuration

数据类型 xdt:dayTimeDurationxs:duration 的子类型,xs:duration 的词汇表示形式只包含 day、hour、minute 和 second 组件。此数据类型位于名称空间 http://www.w3.org/2003/11/xpath-datatypes 中。

四个值都可以从创建的 Duration 设置和获得。

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

参数:
lexicalRepresentation - Duration 的词汇表示形式。
返回:
使用指定 lexicalRepresentation 创建的新 Duration
抛出:
IllegalArgumentException - 如果 lexicalRepresentation 不是只以日期和时间形式表达的 Duration 的有效表示形式。
UnsupportedOperationException - 如果实现无法支持请求值。
NullPointerException - 如果 lexicalRepresentationnull

newDurationDayTime

public Duration newDurationDayTime(long durationInMilliseconds)

使用 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中定义的指定毫秒创建类型为 xdt:dayTimeDurationDuration

数据类型 xdt:dayTimeDurationxs:duration 的子类型,xs:duration 词汇表示形式只包含 day、hour、minute 和 second 组件。此数据类型位于名称空间 http://www.w3.org/2003/11/xpath-datatypes 中。

四个值都可以通过计算指定毫秒的值设置,通过创建的 Durationget 方法获得。该值符合以下规范并由其定义:

通过 GregorianCalendar 使用的历元开始时间定义默认开始实例:即 Calendar.YEAR = 1970、Calendar.MONTH = Calendar.JANUARYCalendar.DATE = 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY,闰年会有不同的天数,所以 Duration.getDays() 的结果将受到影响。

丢弃确定 day、hour、minute 和 second 之后所有剩余毫秒。

参数:
durationInMilliseconds - 要创建的 Duration 的毫秒。
返回:
使用指定 durationInMilliseconds 创建的新 Duration
另请参见:
XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration

newDurationDayTime

public Duration newDurationDayTime(boolean isPositive,
                                   BigInteger day,
                                   BigInteger hour,
                                   BigInteger minute,
                                   BigInteger second)

根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 dayhourminutesecond 创建类型为 xdt:dayTimeDurationDuration

数据类型 xdt:dayTimeDurationxs:duration 的子类型,xs:duration 词汇表示形式只包含 day、hour、minute 和 second 组件。此数据类型位于名称空间 http://www.w3.org/2003/11/xpath-datatypes 中。

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

null 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
day - Duration 的日。
hour - Duration 的时。
minute - Duration 的分。
second - Duration 的秒。
返回:
使用指定的 dayhourminutesecond 创建新的 Duration
抛出:
IllegalArgumentException - 如果值不是 Duration 的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
UnsupportedOperationException - 如果实现无法支持请求值。

newDurationDayTime

public Duration newDurationDayTime(boolean isPositive,
                                   int day,
                                   int hour,
                                   int minute,
                                   int second)

根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 dayhourminutesecond 创建类型为 xdt:dayTimeDurationDuration

数据类型 xdt:dayTimeDurationxs:duration 的子类型,xs:duration 词汇表示形式仅包含 day、hour、minute 和 second 组件。此数据类型位于名称空间 http://www.w3.org/2003/11/xpath-datatypes 中。

DatatypeConstants.FIELD_UNDEFINED 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
day - Duration 的日。
hour - Duration 的时。
minute - Duration 的分。
second - Duration 的秒。
返回:
使用指定的 dayhourminutesecond 创建新的 Duration
抛出:
IllegalArgumentException - 如果值不是 Duration 的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。

newDurationYearMonth

public Duration newDurationYearMonth(String lexicalRepresentation)

通过解析其 String 表示形式 "PnYnM"(XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration)创建类型为 xdt:yearMonthDurationDuration

数据类型 xdt:yearMonthDurationxs:duration 的子类型,xs:duration 词汇表示形式仅包含 year 和 month 组件。此数据类型位于名称空间 XMLConstants.W3C_XPATH_DATATYPE_NS_URI 中。

这两个值都可以从创建的 Duration 设置和获得

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

参数:
lexicalRepresentation - Duration 的词汇表示形式。
返回:
使用指定 lexicalRepresentation 创建的新 Duration
抛出:
IllegalArgumentException - 如果 lexicalRepresentation 不是通过 years 和 months 表示的 Duration 的有效表示形式。
UnsupportedOperationException - 如果实现无法支持请求值。
NullPointerException - 如果 lexicalRepresentationnull

newDurationYearMonth

public Duration newDurationYearMonth(long durationInMilliseconds)

根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定毫秒创建类型为 xdt:yearMonthDurationDuration

数据类型 xdt:yearMonthDurationxs:duration 的子类型,xs:duration 词汇表示形式只包含 year 和 month 组件。此数据类型位于名称空间 XMLConstants.W3C_XPATH_DATATYPE_NS_URI 中。

两个值都可以通过计算指定毫秒的值设置,通过创建的 Durationget 方法获得。该值符合以下规范并由其定义:

通过 GregorianCalendar 使用的历元开始时间定义默认开始实例:即 Calendar.YEAR = 1970、Calendar.MONTH = Calendar.JANUARYCalendar.DATE = 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY,闰年会有不同的天数,所以 Duration.getMonths() 的结果将受到影响。

丢弃确定 year 和 month 之后所有剩余毫秒。

参数:
durationInMilliseconds - 要创建的 Duration 的毫秒。
返回:
使用指定 durationInMilliseconds 创建的新 Duration

newDurationYearMonth

public Duration newDurationYearMonth(boolean isPositive,
                                     BigInteger year,
                                     BigInteger month)

根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 yearmonth 创建类型为 xdt:yearMonthDurationDuration

XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException 和指示实现限制的消息。

null 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
year - Duration 的年。
month - Duration 的月。
返回:
使用指定的 yearmonth 创建的新 Duration
抛出:
IllegalArgumentException - 如果值不是 Duration 的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
UnsupportedOperationException - 如果实现无法支持请求值。

newDurationYearMonth

public Duration newDurationYearMonth(boolean isPositive,
                                     int year,
                                     int month)

根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 yearmonth 创建类型为 xdt:yearMonthDurationDuration

DatatypeConstants.FIELD_UNDEFINED 值指示不设置字段。

参数:
isPositive - 设置为 false 将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
year - Duration 的年。
month - Duration 的月。
返回:
使用指定的 yearmonth 创建的新