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

Class DatatypeFactory



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

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

    1. 如果由DATATYPEFACTORY_PROPERTY指定的系统属性“ javax.xml.datatype.DatatypeFactory ”存在, javax.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尝试加载服务。 如果上下文类加载器为空,则将使用system class loader

      service configuration error情况下,将抛出一个DatatypeConfigurationException

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

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

      • DATATYPEFACTORY_PROPERTY

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

        默认值为javax.xml.datatype.DatatypeFactory

        另请参见:
        Constant Field Values
      • 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 Schema 1.0第3.2.6.1节中所定义。

        XML Schema第2部分:数据类型,3.2.6 duration,将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不是的有效表示 Duration
        UnsupportedOperationException - 如果实现不能支持请求的值。
        NullPointerException - 如果 lexicalRepresentationnull
      • newDuration

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

        XML模式第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的消息,指示实现限制。

        A null值表示该字段未设置。

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

        public Duration newDurationDayTime​(String lexicalRepresentation)
        创建Durationxdt: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不是仅在日期和时间方面表示的 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的消息,指示实现限制。

        A null值表示该字段未设置。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,此参数将被忽略。
        day - 天 Duration
        hour - 小时 Duration
        minute - 分钟: Duration
        second - 第 Duration
        结果
        Duration使用指定的创建 dayhourminutesecond
        异常
        IllegalArgumentException - 如果值不是 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

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

        参数
        isPositive - 设置为false创建一个负的持续时间。 当持续时间的长度为零时,此参数将被忽略。
        day - 天 Duration
        hour - 小时 Duration
        minute - 分钟数 Duration
        second - 第 Duration
        结果
        Duration使用指定的创建 dayhourminutesecond
        异常
        IllegalArgumentException - 如果值不是 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的消息,指示实现限制。

        A null值表示该字段未设置。

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,此参数将被忽略。
        year - 年份 Duration
        month - 月份 Duration
        结果
        新建 Duration使用指定的 yearmonth创建。
        异常
        IllegalArgumentException - 如果值不是 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

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

        参数
        isPositive - 设置为false以创建负持续时间。 当持续时间的长度为零时,此参数将被忽略。
        year - 年份 Duration
        month - 月份 Duration
        结果
        新建 Duration使用指定的 yearmonth创建。
        异常
        IllegalArgumentException - 如果值不是 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参数支持任意大的数字,小数year具有无限精度。

        一个null值表示该字段未设置。

        参数
        year - 要创建的 XMLGregorianCalendar
        month - 的 XMLGregorianCalendar待创建。
        day - 的 XMLGregorianCalendar要创建。
        hour - 的 XMLGregorianCalendar要创建。
        minute - of XMLGregorianCalendar待创建。
        second - of 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

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

        参数
        year - 的 XMLGregorianCalendar将要创建。
        month - 的 XMLGregorianCalendar要创建。
        day - 的 XMLGregorianCalendar要创建。
        hour - 的 XMLGregorianCalendar要创建。
        minute - 的 XMLGregorianCalendar要创建。
        second - of XMLGregorianCalendar待创建。
        millisecond - 的 XMLGregorianCalendar待创建。
        timezone - 的 XMLGregorianCalendar要创建。
        结果
        XMLGregorianCalendar从指定的值创建。
        异常
        IllegalArgumentException -如果任何单独参数的值是由日期/时间数据的映射表中所确定的字段的最大值约束外XMLGregorianCalendar或如果复合值构成的无效XMLGregorianCalendar实例由以下方法测定XMLGregorianCalendar.isValid()