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

Class SAXParserFactory



  • public abstract class SAXParserFactory
    extends Object
    定义工厂API,使应用程序能够配置和获取基于SAX的解析器来解析XML文档。
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • SAXParserFactory

        protected SAXParserFactory​()
        受保护的构造函数强制使用 newInstance()
    • 方法详细信息

      • newDefaultInstance

        public static SAXParserFactory newDefaultInstance​()
        创建一个 SAXParserFactory内置系统默认实现的新实例。
        结果
        SAXParserFactory内建系统默认实现的新实例。
        从以下版本开始:
        9
      • newInstance

        public static SAXParserFactory newInstance​()
        获取SAXParserFactory的新实例。 此静态方法创建新的工厂实例此方法使用以下有序查找过程来确定要加载的SAXParserFactory实现类:
        • 使用javax.xml.parsers.SAXParserFactory系统属性。
        • 使用配置文件“jaxp.properties”。 该文件采用标准Properties格式,通常位于Java安装的conf目录中。 它包含实现类的完全限定名称,其中键是上面定义的系统属性。

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

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

        • 否则返回system-default的实现。

        一旦应用程序获得了对SAXParserFactory的引用,它可以使用工厂来配置和获取解析器实例。

        提示进行故障排除

        设置jaxp.debug系统属性将导致此方法打印大量调试消息到System.err有关它在做什么和它在哪里看。

        如果您在加载SAXParser s时遇到问题,请尝试:

          java -Djaxp.debug=1 YourProgram .... 
        结果
        SAXParserFactory的新实例。
        异常
        FactoryConfigurationError -在以下情况下service configuration error或者如果实现不可用或不能被实例化。
      • newInstance

        public static SAXParserFactory newInstance​(String factoryClassName,
                                                   ClassLoader classLoader)
        从类名中获取一个新的SAXParserFactory实例。 在类路径中有多个提供程序时,此功能很有用。 它可以更好地控制应用程序,因为它可以指定应该加载哪个提供程序。

        一旦应用程序获得了对SAXParserFactory的引用,它可以使用工厂来配置和获取解析器实例。

        提示进行故障排除

        设置jaxp.debug系统属性将导致此方法打印大量调试消息到System.err有关它在做什么和它在哪里看。

        如果您有问题,请尝试:

          java -Djaxp.debug=1 YourProgram .... 
        参数
        factoryClassName - 提供 javax.xml.parsers.SAXParserFactory实施的完全合格的工厂类名称。
        classLoader - ClassLoader用于加载工厂类。 如果null当前的Thread的上下文classLoader用于加载工厂类。
        结果
        新实例 SAXParserFactory
        异常
        FactoryConfigurationError - 如果 factoryClassNamenull ,或者工厂类无法加载,实例化。
        从以下版本开始:
        1.6
        另请参见:
        newInstance()
      • setNamespaceAware

        public void setNamespaceAware​(boolean awareness)
        指定此代码生成的解析器将为XML命名空间提供支持。 默认值为false
        参数
        awareness - 如果此代码生成的解析器将为XML命名空间提供支持, awareness true; 否则为假。
      • setValidating

        public void setValidating​(boolean validating)
        指定此代码生成的解析器将在文档解析时验证文档。 默认值为false

        请注意,这里的“验证”是指XML推荐中定义的a validating parser 换句话说,它基本上只是控制DTD验证。 (JAXP 1.2中定义的遗留的两个属性除外)

        要使用现代模式语言(如W3C XML Schema或RELAX NG而不是DTD),您可以通过离开setValidating(boolean)方法false将您的解析器配置为非验证解析器,然后使用setSchema(Schema)方法将模式与解析器相关联。

        参数
        validating - 如果此代码生成的解析器将在解析文档时验证文本, validating true; 否则为假。
      • isNamespaceAware

        public boolean isNamespaceAware​()
        指示工厂是否配置为生成名称空间感知的解析器。
        结果
        如果工厂配置为生成名称空间感知的解析器,则为true; 否则为假。
      • isValidating

        public boolean isValidating​()
        指示工厂是否配置为生成在解析期间验证XML内容的解析器。
        结果
        如果工厂配置为生成在解析期间验证XML内容的解析器,则为true; 否则为假。
      • setSchema

        public void setSchema​(Schema schema)
        Schema设置为由此工厂创建的解析器使用。

        Schema为非空值时,解析器将使用从其创建的验证器在将信息传递到应用程序之前验证文档。

        当验证器发现警告/错误/致命错误时,解析器必须处理它们,就像解析器本身发现这些错误一样。 换句话说,如果设置了用户指定的ErrorHandler ,它必须收到这些错误,如果不是,则必须根据实现的特定默认错误处理规则进行处理。

        验证器可以修改SAX事件流(例如通过添加在文档中缺少的默认值),并且解析器负责确保应用程序将接收到修改的事件流。

        最初, null被设置为Schema

        即使isValidating()方法返回false此处理也将生效。

        http://java.sun.com/xml/jaxp/properties/schemaSource属性和/或http://java.sun.com/xml/jaxp/properties/schemaLanguage属性与非空Schema对象结合使用是一个错误。 当这些属性在SAXParser上设置时,此类配置将导致SAXException异常。

        实施者注意事项

        解析器必须能够使用任何Schema实现。 但是,解析器和模式允许使用实现特定的定制机制,只要它们产生规范中描述的结果即可。

        参数
        schema - Schema要使用, null删除一个模式。
        异常
        UnsupportedOperationException - 实现时不覆盖此方法
        从以下版本开始:
        1.5
      • setXIncludeAware

        public void setXIncludeAware​(boolean state)
        设置XInclude处理的状态。

        如果在文档实例中找到XInclude标记,则应按XML Inclusions (XInclude) Version 1.0中的规定进行处理。

        XInclude处理默认为false

        参数
        state - 将XInclude处理设置为 truefalse
        异常
        UnsupportedOperationException - 实现时不覆盖此方法
        从以下版本开始:
        1.5
      • isXIncludeAware

        public boolean isXIncludeAware​()
        获取XInclude处理的状态。
        结果
        XInclude处理的当前状态
        异常
        UnsupportedOperationException - 实现时不覆盖此方法
        从以下版本开始:
        1.5