模块  java.xml
软件包  javax.xml.datatype

Class DatatypeFactory


  • public abstract class DatatypeFactory
    extends Object
    工厂创建新的javax.xml.datatype Object ,将XML映射到Java Object

    通过newInstance()方法创建DatatypeFactory新实例,该方法使用以下实现解析机制来确定实现:

    1. 如果存在由DATATYPEFACTORY_PROPERTYjavax.xml.datatype.DatatypeFactory ”指定的系统属性,则实例化具有属性值名称的类。 在实例化过程中抛出的任何异常都包装为DatatypeConfigurationException
    2. 使用配置文件“jaxp.properties”。 该文件采用标准Properties格式,通常位于Java安装的conf目录中。 它包含实现类的完全限定名称,键是上面定义的系统属性。

      jaxp.properties文件只能由JAXP实现读取一次,然后缓存其值以供将来使用。 如果在第一次尝试从该文件读取时该文件不存在,则不再进行任何检查以检查其是否存在。 在第一次读取之后,无法更改jaxp.properties中任何属性的值。

    3. 使用由ServiceLoader类定义的服务提供者加载工具尝试使用default loading mechanism查找和加载服务的实现 :服务提供者加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null,则将使用system class loader

      如果是service configuration error ,将抛出DatatypeConfigurationException

    4. 最后的机制是尝试实例化指定的 在实例化过程中抛出的任何异常都包装为DatatypeConfigurationException

    从以下版本开始:
    1.5
    • 字段详细信息

      • DATATYPEFACTORY_PROPERTY

        public static final String DATATYPEFACTORY_PROPERTY
        JSR 206中定义的默认属性名称:用于XML处理的Java(TM)API(JAXP)1.3。

        默认值为javax.xml.datatype.DatatypeFactory

        另请参见:
        常数字段值
      • DATATYPEFACTORY_IMPLEMENTATION_CLASS

        public static final String DATATYPEFACTORY_IMPLEMENTATION_CLASS
        JSR 206中定义的默认实现类名:用于XML处理的Java(TM)API(JAXP)1.3

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

        用户不应该参考这个字段; 它仅用于记录工厂实现细节。

    • 构造方法详细信息

      • DatatypeFactory

        protected DatatypeFactory()
        受保护的构造函数以防止在包外部进行实例化。

        使用newInstance()创建一个DatatypeFactory

    • 方法详细信息

      • 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的上下文classLoader用于加载工厂类。
        结果
        DatatypeFactory新实例
        异常
        DatatypeConfigurationException - 如果 factoryClassNamenull ,或者无法加载工厂类,则实例化。
        从以下版本开始:
        1.6
        另请参见:
        newInstance()
      • newDuration

        public abstract Duration newDuration​(String lexicalRepresentation)
        获得的新实例Duration指定Duration作为它的字符串表示,“PnYnMnDTnHnMnS”,如在XML模式1.0第3.2.6.1节定义。

        XML Schema第2部分:数据类型,3.2.6持续时间,将duration定义为:

        duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.

        所有六个值都已设置,可从创建的Duration获得

        XML Schema规范声明值可以是任意大小。 实现可以选择不支持或不支持任意大和/或小值。 如果超出实施容量,将抛出UnsupportedOperationException并显示指示实施限制的消息。

        参数
        lexicalRepresentation - String表示 Duration
        结果
        通过解析 Duration创建新的 lexicalRepresentation
        异常
        IllegalArgumentException - 如果 lexicalRepresentation不是 lexicalRepresentation的有效表示 Duration
        UnsupportedOperationException - 如果实现不支持请求的值。
        NullPointerException - 如果 lexicalRepresentationnull
      • newDuration

        public abstract Duration newDuration​(long durationInMilliSeconds)
        获取Duration的新实例,指定Duration作为毫秒。

        XML Schema第2部分:数据类型,3.2.6持续时间,将duration定义为:

        duration represents a duration of time. The value space of duration is a six-dimensional space where the coordinates designate the Gregorian year, month, day, hour, minute, and second components defined in Section 5.5.3.2 of [ISO 8601], respectively. These components are ordered in their significance by their order of appearance i.e. as year, month, day, hour, minute, and second.

        所有六个值都是通过从指定的毫秒计算它们的值来设置的,并且可以使用创建的Durationget方法获得 这些值符合并定义为:

        默认启动实例由下式定义GregorianCalendar的使用历元的开始的:即Calendar.YEAR = 1970, Calendar.MONTH = Calendar.JANUARYCalendar.DATE = 1等由于有在格里历的变化,例如,闰年已经这是很重要月中的不同日期= Calendar.FEBRUARY因此可能会影响Duration.getMonths()Duration.getDays()的结果。

        参数
        durationInMilliSeconds - 要创建的持续时间(以毫秒为单位)。
        结果
        新的 Duration代表 durationInMilliSeconds
      • newDuration

        public abstract Duration newDuration​(boolean isPositive,
                                             BigInteger years,
                                             BigInteger months,
                                             BigInteger days,
                                             BigInteger hours,
                                             BigInteger minutes,
                                             BigDecimal seconds)
        获得的新实例Duration指定Duration为isPositive,年,月,日,时,分,秒。

        XML Schema规范声明值可以是任意大小。 实现可以选择不支持或不支持任意大和/或小值。 如果超出实施容量,将抛出UnsupportedOperationException并显示指示实施限制的消息。

        null值表示未设置该字段。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,将忽略此参数。
        years - 这 Duration
        months - 其中 Duration
        days - 这 Duration
        hours - 这 Duration
        minutes - 其中 Duration
        seconds - 其中 Duration
        结果
        从指定值创建的新 Duration
        异常
        IllegalArgumentException - 如果值不是 Duration的有效表示 Duration :如果所有字段(年,月,...)为空或任何字段为负数。
        UnsupportedOperationException - 如果实现不支持请求的值。
      • newDurationDayTime

        public Duration newDurationDayTime​(String lexicalRepresentation)
        创建Duration类型xdt:dayTimeDuration通过分析其String表示,“PnDTnHnMnS”, XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration

        数据类型xdt:dayTimeDuration是的子类型xs:duration其词汇表示仅包含日,小时,分,和第二组分。 此数据类型驻留在命名空间http://www.w3.org/2003/11/xpath-datatypes

        所有四个值均已设置,可从创建的Duration获得

        XML Schema规范声明值可以是任意大小。 实现可以选择不支持或不支持任意大和/或小值。 如果超出实现容量,将抛出UnsupportedOperationException并显示一条指示实施限制的消息。

        参数
        lexicalRepresentation - 持续时间的词汇表示。
        结果
        Duration使用指定的创建 lexicalRepresentation
        异常
        IllegalArgumentException - 如果 lexicalRepresentation不是 lexicalRepresentation的有效表示, Duration表示日期和时间。
        UnsupportedOperationException - 如果实现不支持请求的值。
        NullPointerException - 如果 lexicalRepresentationnull
      • newDurationDayTime

        public Duration newDurationDayTime​(boolean isPositive,
                                           BigInteger day,
                                           BigInteger hour,
                                           BigInteger minute,
                                           BigInteger second)
        创建Duration类型的xdt:dayTimeDuration使用指定的dayhourminutesecond中定义XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration

        数据类型xdt:dayTimeDuration是的子类型xs:duration其词汇表示仅包含日,小时,分,和第二组分。 此数据类型位于命名空间http://www.w3.org/2003/11/xpath-datatypes

        XML Schema规范声明值可以是任意大小。 实现可以选择不支持或不支持任意大和/或小值。 如果超出实施容量,将抛出UnsupportedOperationException并显示指示实施限制的消息。

        null值表示未设置该字段。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,将忽略此参数。
        day - 日期 Duration
        hour - 小时 Duration
        minute - 分钟 Duration
        second - second第二 Duration
        结果
        Duration使用指定的创建 dayhourminutesecond
        异常
        IllegalArgumentException - 如果值不是 Duration的有效表示 Duration :如果所有字段(日,小时,...)为空或者任何字段为负数。
        UnsupportedOperationException - 如果实现不支持请求的值。
      • newDurationDayTime

        public Duration newDurationDayTime​(boolean isPositive,
                                           int day,
                                           int hour,
                                           int minute,
                                           int second)
        创建Duration类型的xdt:dayTimeDuration使用指定的dayhourminutesecond中定义XQuery 1.0 and XPath 2.0 Data Model, xdt:dayTimeDuration

        数据类型xdt:dayTimeDuration是的子类型xs:duration其词汇表示仅包含日,小时,分,和第二组分。 此数据类型位于命名空间http://www.w3.org/2003/11/xpath-datatypes

        DatatypeConstants.FIELD_UNDEFINED值表示未设置该字段。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,将忽略此参数。
        day - 日期 Duration
        hour - 小时 Duration
        minute - 分钟, Duration
        second - 第二个 Duration
        结果
        Duration使用指定的创建 dayhourminutesecond
        异常
        IllegalArgumentException - 如果值不是 Duration的有效表示 Duration :如果任何字段(日,小时,......)为负数。
      • newDurationYearMonth

        public Duration newDurationYearMonth​(boolean isPositive,
                                             BigInteger year,
                                             BigInteger month)
        创建Duration类型的xdt:yearMonthDuration使用指定yearmonth中定义XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration

        XML Schema规范声明值可以是任意大小。 实现可以选择不支持或不支持任意大和/或小值。 如果超出实施容量,将抛出UnsupportedOperationException并显示指示实施限制的消息。

        null值表示未设置该字段。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,将忽略此参数。
        year - Duration
        month - 月份 Duration
        结果
        Duration使用指定的创建 yearmonth
        异常
        IllegalArgumentException - 如果值不是 Duration的有效表示 Duration :如果所有字段(年,月)为空或任何字段为负数。
        UnsupportedOperationException - 如果实现不支持请求的值。
      • newDurationYearMonth

        public Duration newDurationYearMonth​(boolean isPositive,
                                             int year,
                                             int month)
        创建Duration类型的xdt:yearMonthDuration使用指定yearmonth中定义XQuery 1.0 and XPath 2.0 Data Model, xdt:yearMonthDuration

        DatatypeConstants.FIELD_UNDEFINED值表示未设置该字段。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,将忽略此参数。
        year - Duration
        month - 月份 Duration
        结果
        Duration使用指定的创建 yearmonth
        异常
        IllegalArgumentException - 如果值不是 Duration的有效表示 Duration :如果任何字段(年,月)为负数。
      • newXMLGregorianCalendar

        public abstract XMLGregorianCalendar newXMLGregorianCalendar​(BigInteger year,
                                                                     int month,
                                                                     int day,
                                                                     int hour,
                                                                     int minute,
                                                                     int second,
                                                                     BigDecimal fractionalSecond,
                                                                     int timezone)
        构造函数允许W3C XML Schema 1.0对xsd:dateTime和相关内置数据类型的建议所允许的完整值空间。 请注意, year参数支持任意大数,而fractionalSecond具有无限精度。

        null值表示未设置该字段。

        参数
        year - 即将创建的 XMLGregorianCalendar
        month - 即将创建的 XMLGregorianCalendar
        day - 即将创建的 XMLGregorianCalendar
        hour - 即将创建的 XMLGregorianCalendar
        minute - 即将创建的 XMLGregorianCalendar
        second - 即将创建的 XMLGregorianCalendar
        fractionalSecond - 即将创建的 XMLGregorianCalendar
        timezone - 即将创建的 XMLGregorianCalendar
        结果
        XMLGregorianCalendar是根据指定值创建的。
        异常
        IllegalArgumentException - 如果任何单个参数的值超出字段的最大值约束(由XMLGregorianCalendar的日期/时间数据映射表确定),或者复合值构成由XMLGregorianCalendar.isValid()确定的无效XMLGregorianCalendar实例。
      • newXMLGregorianCalendar

        public XMLGregorianCalendar newXMLGregorianCalendar​(int year,
                                                            int month,
                                                            int day,
                                                            int hour,
                                                            int minute,
                                                            int second,
                                                            int millisecond,
                                                            int timezone)
        java.util.GregorianCalendar实例需要转换为XMLGregorianCalendar实例的值空间的构造方法。

        XMLGregorianCalendar eonfractionalSecond设置为null

        DatatypeConstants.FIELD_UNDEFINED值表示未设置该字段。

        参数
        year - 要创建的 XMLGregorianCalendar
        month - 即将创建的 XMLGregorianCalendar
        day - 即将创建的 XMLGregorianCalendar
        hour - 即将创建的 XMLGregorianCalendar
        minute - 即将创建的 XMLGregorianCalendar
        second - 即将创建的 XMLGregorianCalendar
        millisecond - 要创建的 XMLGregorianCalendar
        timezone - 即将创建的 XMLGregorianCalendar
        结果
        XMLGregorianCalendar是根据指定值创建的。
        异常
        IllegalArgumentException - 如果任何单个参数的值超出字段的最大值约束(由XMLGregorianCalendar的日期/时间数据映射表确定),或者复合值构成由XMLGregorianCalendar.isValid()确定的无效XMLGregorianCalendar实例。