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

Class DocumentBuilderFactory


  • public abstract class DocumentBuilderFactory
    extends Object
    定义工厂API,使应用程序能够从XML文档中获取生成DOM对象树的解析器。
    从以下版本开始:
    1.4
    • 构造方法详细信息

      • DocumentBuilderFactory

        protected DocumentBuilderFactory()
        受保护的构造函数以防止实例化。 使用newInstance()
    • 方法详细信息

      • newDefaultInstance

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

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

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

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

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

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

        故障排除提示

        设置jaxp.debug系统属性将导致此方法将大量调试消息打印到System.err了解它正在做什么以及它在哪里查看。

        如果您在加载DocumentBuilder遇到问题,请尝试:

          java -Djaxp.debug=1 YourProgram .... 
        结果
        DocumentBuilderFactory新实例
        异常
        FactoryConfigurationError - 如果是service configuration error或者实现不可用或无法实例化。
      • newInstance

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

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

        故障排除提示

        设置jaxp.debug系统属性将导致此方法将大量调试消息打印到System.err了解它正在做什么以及它在哪里查看。

        如果您有问题,请尝试:

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

        public void setNamespaceAware​(boolean awareness)
        指定此代码生成的解析器将提供对XML命名空间的支持。 默认情况下,此值设置为false
        参数
        awareness - 如果生成的解析器将提供对XML命名空间的支持, awareness true;否则为false。 否则是假的。
      • 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;否则为false。 否则是假的。
      • setIgnoringElementContentWhitespace

        public void setIgnoringElementContentWhitespace​(boolean whitespace)
        指定此工厂创建的解析器在解析XML文档时必须消除元素内容中的空格(有时称为“可忽略的空格”)(参见XML Rec 2.10)。 请注意,将仅消除直接包含在具有仅元素内容模型的元素内容中的空白(请参阅XML Rec 3.2.1)。 由于依赖于内容模型,此设置要求解析器处于验证模式。 默认情况下,此值设置为false
        参数
        whitespace - 如果创建的解析器在解析XML文档时必须消除元素内容中的空格, whitespace true;否则为false。 否则是假的。
      • setExpandEntityReferences

        public void setExpandEntityReferences​(boolean expandEntityRef)
        指定此代码生成的解析器将扩展实体引用节点。 默认情况下,此值设置为true
        参数
        expandEntityRef - 如果生成的解析器将扩展实体引用节点, expandEntityRef true;否则为false。 否则是假的。
      • setIgnoringComments

        public void setIgnoringComments​(boolean ignoreComments)
        指定此代码生成的解析器将忽略注释。 默认情况下,此值设置为false
        参数
        ignoreComments - boolean在处理期间忽略注释的值
      • setCoalescing

        public void setCoalescing​(boolean coalescing)
        指定此代码生成的解析器将CDATA节点转换为Text节点,并将其附加到相邻(如果有)文本节点。 默认情况下,此值设置为false
        参数
        coalescing - 如果生成的解析器将CDATA节点转换为Text节点并将其附加到相邻(如果有)文本节点, coalescing true;否则为false。 否则是假的。
      • isNamespaceAware

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

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

        public boolean isIgnoringElementContentWhitespace()
        指示工厂是否配置为生成忽略元素内容中可忽略空格的解析器。
        结果
        如果工厂配置为生成忽略元素内容中可忽略空格的解析器,则为true;否则为false。 否则是假的。
      • isExpandEntityReferences

        public boolean isExpandEntityReferences()
        指示工厂是否配置为生成扩展实体引用节点的解析器。
        结果
        如果工厂配置为生成扩展实体引用节点的解析器,则为true;否则为false。 否则是假的。
      • isIgnoringComments

        public boolean isIgnoringComments()
        指示工厂是否配置为生成忽略注释的解析器。
        结果
        如果工厂配置为生成忽略注释的解析器,则为true;否则为false。 否则是假的。
      • isCoalescing

        public boolean isCoalescing()
        指示工厂是否配置为生成将CDATA节点转换为Text节点并将其附加到相邻(如果有)Text节点的解析器。
        结果
        如果工厂配置为生成将CDATA节点转换为Text节点并将其附加到相邻(如果有)Text节点的解析器,则为true;否则为false。 否则是假的。
      • getAttribute

        public abstract Object getAttribute​(String name)
                                     throws IllegalArgumentException
        允许用户检索底层实现的特定属性。
        参数
        name - 属性的名称。
        结果
        value属性的值。
        异常
        IllegalArgumentException - 如果底层实现无法识别该属性,则抛出此异常。
      • getFeature

        public abstract boolean getFeature​(String name)
                                    throws ParserConfigurationException
        获取指定功能的状态。

        功能名称完全限定URI s。 实现可以定义自己的功能。 一个ParserConfigurationException如果这是抛出DocumentBuilderFactoryDocumentBuilder的IT创建不支持该功能。 DocumentBuilderFactory可能会公开某个功能值但无法更改其状态。

        参数
        name - 功能名称。
        结果
        命名功能的状态。
        异常
        ParserConfigurationException - 如果这个 DocumentBuilderFactory或它创建的 DocumentBuilder不能支持此功能。
        从以下版本开始:
        1.5
      • setSchema

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

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

        当验证程序发现错误时,解析器负责将它们报告给用户指定的ErrorHandler (或者如果未设置错误处理程序,则忽略它们或抛出它们),就像解析器本身找到的任何其他错误一样。 换句话说,如果设置了用户指定的ErrorHandler ,它必须接收这些错误,如果没有,则必须根据特定于实现的默认错误处理规则来处理它们。

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

        最初,null设置为Schema

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

        http://java.sun.com/xml/jaxp/properties/schemaSource属性和/或http://java.sun.com/xml/jaxp/properties/schemaLanguage属性与Schema对象结合使用是错误的 这样的配置将导致ParserConfigurationException的时候例外newDocumentBuilder()被调用。

        实现者注意事项

        解析器必须能够使用任何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