java.lang.Object javax.xml.datatype.DatatypeFactory
public abstract class DatatypeFactory
创建新 javax.xml.datatype
Object
的工厂,创建的对象可提供 XML 和 Java Object
之间的映射。
newInstance()
用于创建新的 DatatypeFactory
。按下列顺序使用以下实现解析机制:
DATATYPEFACTORY_PROPERTY
指定的系统属性 "javax.xml.datatype.DatatypeFactory
" 存在,则实例化具有属性值名称的类。将实例化进程中抛出的任何异常包装为 DatatypeConfigurationException
。 Properties
Object
中加载它。然后查询 Properties
Object
,以获取前面步骤中的文档介绍的属性,并按照前面步骤中文档的介绍进行处理。 META-INF/services/java.xml.datatype.DatatypeFactory
。将实例化进程中抛出的任何异常包装为 DatatypeConfigurationException
。 DATATYPEFACTORY_IMPLEMENTATION_CLASS
指定的 Class
。实例化进程中抛出的任何异常将被包装为 DatatypeConfigurationException
。
字段摘要 | |
---|---|
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 中的定义,使用指定 day 、hour 、minute 和 second 创建类型为 xdt:dayTimeDuration 的 Duration 。 |
Duration |
newDurationDayTime(boolean isPositive, int day, int hour, int minute, int second) 根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 day 、hour 、minute 和 second 创建类型为 xdt:dayTimeDuration 的 Duration 。 |
Duration |
newDurationDayTime(long durationInMilliseconds) 使用 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中定义的指定毫秒创建类型为 xdt:dayTimeDuration 的 Duration 。 |
Duration |
newDurationDayTime(String lexicalRepresentation) 通过解析其 String 表示形式 "PnDTnHnMnS"(XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration)创建类型为 xdt:dayTimeDuration 的 Duration 。 |
Duration |
newDurationYearMonth(boolean isPositive, BigInteger year, BigInteger month) 根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 year 和 month 创建类型为 xdt:yearMonthDuration 的 Duration 。 |
Duration |
newDurationYearMonth(boolean isPositive, int year, int month) 根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 year 和 month 创建类型为 xdt:yearMonthDuration 的 Duration 。 |
Duration |
newDurationYearMonth(long durationInMilliseconds) 根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定毫秒创建类型为 xdt:yearMonthDuration 的 Duration 。 |
Duration |
newDurationYearMonth(String lexicalRepresentation) 通过解析其 String 表示形式 "PnYnM"(XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration)创建类型为 xdt:yearMonthDuration 的 Duration 。 |
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 模式内置数据类型 date 或 g* 的 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 |
字段详细信息 |
---|
public static final String DATATYPEFACTORY_PROPERTY
JSR 206:Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。
默认值为 javax.xml.datatype.DatatypeFactory
。
public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS
JSR 206: Java(TM) API for XML Processing (JAXP) 1.3 中定义的默认实现类名称。
如果其他实现解析机制都没有成功,则实现者应该指定将被实例化的恰当类的名称。
用户不应该引用此字段;该字段只用来记录工厂实现详细信息。
构造方法详细信息 |
---|
protected DatatypeFactory()
受保护的构造方法,包外无法实例化。
使用 newInstance()
创建 DatatypeFactory
。
方法详细信息 |
---|
public static DatatypeFactory newInstance() throws DatatypeConfigurationException
获取新的 DatatypeFactory
实例。
实现解析机制定义在此 Class
的文档中。
DatatypeFactory
实例
DatatypeConfigurationException
- 如果该实现不可用,或者无法实例化。
newInstance(String factoryClassName, ClassLoader classLoader)
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
- 如果
factoryClassName
为
null
,或者无法加载和实例化工厂类。
newInstance()
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
-
Duration
的
String
表示形式。
lexicalRepresentation
创建的新
Duration
。
IllegalArgumentException
- 如果
lexicalRepresentation
不是
Duration
的有效表示形式。
UnsupportedOperationException
- 如果实现无法支持请求值。
NullPointerException
- 如果
lexicalRepresentation
为
null
。
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)排序。
六个值都可以通过计算指定毫秒的值来设置,通过创建的 Duration
的 get
方法获得。该值符合以下规范并由其定义:
XMLGregorianCalendar
XML 模式 1.0 和 Java 表示形式之间的日期/时间数据类型字段映射关系通过 GregorianCalendar
使用的历元开始时间定义默认开始实例:即 Calendar.YEAR
= 1970、Calendar.MONTH
= Calendar.JANUARY
、Calendar.DATE
= 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY
,闰年会有不同的天数,所以 Duration.getMonths()
和 Duration.getDays()
的结果都会受到影响。
durationInMilliSeconds
- 要创建的 Duration,以毫秒为单位。
durationInMilliSeconds
的新
Duration
。
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
- 如果实现无法支持请求值。
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)
public Duration newDurationDayTime(String lexicalRepresentation)
通过解析其 String
表示形式 "PnDTnHnMnS"(XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration)创建类型为 xdt:dayTimeDuration
的 Duration
。
数据类型 xdt:dayTimeDuration
是 xs: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
- 如果
lexicalRepresentation
为
null
。
public Duration newDurationDayTime(long durationInMilliseconds)
使用 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中定义的指定毫秒创建类型为 xdt:dayTimeDuration
的 Duration
。
数据类型 xdt:dayTimeDuration
是 xs:duration
的子类型,xs:duration
词汇表示形式只包含 day、hour、minute 和 second 组件。此数据类型位于名称空间 http://www.w3.org/2003/11/xpath-datatypes
中。
四个值都可以通过计算指定毫秒的值设置,通过创建的 Duration
的 get
方法获得。该值符合以下规范并由其定义:
XMLGregorianCalendar
XML 模式 1.0 和 Java 表示形式之间的日期/时间数据类型字段映射关系通过 GregorianCalendar
使用的历元开始时间定义默认开始实例:即 Calendar.YEAR
= 1970、Calendar.MONTH
= Calendar.JANUARY
、Calendar.DATE
= 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY
,闰年会有不同的天数,所以 Duration.getDays()
的结果将受到影响。
丢弃确定 day、hour、minute 和 second 之后所有剩余毫秒。
durationInMilliseconds
- 要创建的
Duration
的毫秒。
durationInMilliseconds
创建的新
Duration
。
public Duration newDurationDayTime(boolean isPositive, BigInteger day, BigInteger hour, BigInteger minute, BigInteger second)
根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 day
、hour
、minute
和 second
创建类型为 xdt:dayTimeDuration
的 Duration
。
数据类型 xdt:dayTimeDuration
是 xs: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
的秒。
day
、
hour
、
minute
和
second
创建新的
Duration
。
IllegalArgumentException
- 如果值不是
Duration
的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
UnsupportedOperationException
- 如果实现无法支持请求值。
public Duration newDurationDayTime(boolean isPositive, int day, int hour, int minute, int second)
根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration 中的定义,使用指定 day
、hour
、minute
和 second
创建类型为 xdt:dayTimeDuration
的 Duration
。
数据类型 xdt:dayTimeDuration
是 xs: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
的秒。
day
、
hour
、
minute
和
second
创建新的
Duration
。
IllegalArgumentException
- 如果值不是
Duration
的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
public Duration newDurationYearMonth(String lexicalRepresentation)
通过解析其 String
表示形式 "PnYnM"(XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration)创建类型为 xdt:yearMonthDuration
的 Duration
。
数据类型 xdt:yearMonthDuration
是 xs: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
- 如果
lexicalRepresentation
为
null
。
public Duration newDurationYearMonth(long durationInMilliseconds)
根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定毫秒创建类型为 xdt:yearMonthDuration
的 Duration
。
数据类型 xdt:yearMonthDuration
是 xs:duration
的子类型,xs:duration
词汇表示形式只包含 year 和 month 组件。此数据类型位于名称空间 XMLConstants.W3C_XPATH_DATATYPE_NS_URI
中。
两个值都可以通过计算指定毫秒的值设置,通过创建的 Duration
的 get
方法获得。该值符合以下规范并由其定义:
XMLGregorianCalendar
XML 模式 1.0 和 Java 表示形式之间的日期/时间数据类型字段映射关系 通过 GregorianCalendar
使用的历元开始时间定义默认开始实例:即 Calendar.YEAR
= 1970、Calendar.MONTH
= Calendar.JANUARY
、Calendar.DATE
= 1 等。这非常重要,因为阳历中存在变化,例如,对于 month = Calendar.FEBRUARY
,闰年会有不同的天数,所以 Duration.getMonths()
的结果将受到影响。
丢弃确定 year 和 month 之后所有剩余毫秒。
durationInMilliseconds
- 要创建的
Duration
的毫秒。
durationInMilliseconds
创建的新
Duration
。
public Duration newDurationYearMonth(boolean isPositive, BigInteger year, BigInteger month)
根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 year
和 month
创建类型为 xdt:yearMonthDuration
的 Duration
。
XML 模式规范说明值可以为任意大小。实现可以选择不(或不能)支持任意大和/或小的值。如果超过实现容量,则抛出 UnsupportedOperationException
和指示实现限制的消息。
null
值指示不设置字段。
isPositive
- 设置为
false
将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
year
-
Duration
的年。
month
-
Duration
的月。
year
和
month
创建的新
Duration
。
IllegalArgumentException
- 如果值不是
Duration
的有效表示形式:如果所有这些字段(years、months 等等)为 null,或者任何一个为负。
UnsupportedOperationException
- 如果实现无法支持请求值。
public Duration newDurationYearMonth(boolean isPositive, int year, int month)
根据 XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration 中的定义,使用指定 year
和 month
创建类型为 xdt:yearMonthDuration
的 Duration
。
DatatypeConstants.FIELD_UNDEFINED
值指示不设置字段。
isPositive
- 设置为
false
将创建负的 Duration。当 Duration 的长度为零时,将忽略此参数。
year
-
Duration
的年。
month
-
Duration
的月。
year
和
month
创建的新