- java.lang.Object
-
- javax.xml.parsers.DocumentBuilderFactory
-
public abstract class DocumentBuilderFactory extends Object
定义工厂API,使应用程序能够从XML文档中获取生成DOM对象树的解析器。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 变量 构造器 描述 protectedDocumentBuilderFactory()受保护的构造函数以防止实例化。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract ObjectgetAttribute(String name)允许用户检索底层实现的特定属性。abstract booleangetFeature(String name)获取指定功能的状态。SchemagetSchema()获取通过setSchema(Schema schema)方法指定的Schema对象。booleanisCoalescing()指示工厂是否配置为生成将CDATA节点转换为Text节点并将其附加到相邻(如果有)Text节点的解析器。booleanisExpandEntityReferences()指示工厂是否配置为生成扩展实体引用节点的解析器。booleanisIgnoringComments()指示工厂是否配置为生成忽略注释的解析器。booleanisIgnoringElementContentWhitespace()指示工厂是否配置为生成忽略元素内容中可忽略空格的解析器。booleanisNamespaceAware()指示工厂是否配置为生成可识别名称空间的解析器。booleanisValidating()指示工厂是否配置为生成在解析期间验证XML内容的解析器。booleanisXIncludeAware()获取XInclude处理的状态。static DocumentBuilderFactorynewDefaultInstance()创建DocumentBuilderFactory内置系统默认实现的新实例。abstract DocumentBuildernewDocumentBuilder()使用当前配置的参数创建DocumentBuilder的新实例。static DocumentBuilderFactorynewInstance()获取DocumentBuilderFactory的新实例。static DocumentBuilderFactorynewInstance(String factoryClassName, ClassLoader classLoader)从类名获取DocumentBuilderFactory的新实例。abstract voidsetAttribute(String name, Object value)允许用户在底层实现上设置特定属性。voidsetCoalescing(boolean coalescing)指定此代码生成的解析器将CDATA节点转换为Text节点,并将其附加到相邻(如果有)文本节点。voidsetExpandEntityReferences(boolean expandEntityRef)指定此代码生成的解析器将扩展实体引用节点。abstract voidsetFeature(String name, boolean value)设置此工厂创建的DocumentBuilderFactory和DocumentBuilder的功能。voidsetIgnoringComments(boolean ignoreComments)指定此代码生成的解析器将忽略注释。voidsetIgnoringElementContentWhitespace(boolean whitespace)指定此工厂创建的解析器在解析XML文档时必须消除元素内容中的空格(有时称为“可忽略的空格”)(参见XML Rec 2.10)。voidsetNamespaceAware(boolean awareness)指定此代码生成的解析器将提供对XML命名空间的支持。voidsetSchema(Schema schema)设置Schema以供从此工厂创建的解析器使用。voidsetValidating(boolean validating)指定此代码生成的解析器将在解析文档时验证它们。voidsetXIncludeAware(boolean state)设置XInclude处理的状态。
-
-
-
构造方法详细信息
-
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- 如果factoryClassName是null,或者无法加载工厂类,则实例化。 - 从以下版本开始:
- 1.6
- 另请参见:
-
newInstance()
-
newDocumentBuilder
public abstract DocumentBuilder newDocumentBuilder() throws ParserConfigurationException
使用当前配置的参数创建DocumentBuilder的新实例。- 结果
- DocumentBuilder的新实例。
- 异常
-
ParserConfigurationException- 如果无法创建满足请求配置的DocumentBuilder。
-
setNamespaceAware
public void setNamespaceAware(boolean awareness)
指定此代码生成的解析器将提供对XML命名空间的支持。 默认情况下,此值设置为false- 参数
-
awareness- 如果生成的解析器将提供对XML命名空间的支持,awarenesstrue;否则为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- 如果生成的解析器将在解析文档时验证文档,validatingtrue;否则为false。 否则是假的。
-
setIgnoringElementContentWhitespace
public void setIgnoringElementContentWhitespace(boolean whitespace)
指定此工厂创建的解析器在解析XML文档时必须消除元素内容中的空格(有时称为“可忽略的空格”)(参见XML Rec 2.10)。 请注意,将仅消除直接包含在具有仅元素内容模型的元素内容中的空白(请参阅XML Rec 3.2.1)。 由于依赖于内容模型,此设置要求解析器处于验证模式。 默认情况下,此值设置为false。- 参数
-
whitespace- 如果创建的解析器在解析XML文档时必须消除元素内容中的空格,whitespacetrue;否则为false。 否则是假的。
-
setExpandEntityReferences
public void setExpandEntityReferences(boolean expandEntityRef)
指定此代码生成的解析器将扩展实体引用节点。 默认情况下,此值设置为true- 参数
-
expandEntityRef- 如果生成的解析器将扩展实体引用节点,expandEntityReftrue;否则为false。 否则是假的。
-
setIgnoringComments
public void setIgnoringComments(boolean ignoreComments)
指定此代码生成的解析器将忽略注释。 默认情况下,此值设置为false。- 参数
-
ignoreComments-boolean在处理期间忽略注释的值
-
setCoalescing
public void setCoalescing(boolean coalescing)
指定此代码生成的解析器将CDATA节点转换为Text节点,并将其附加到相邻(如果有)文本节点。 默认情况下,此值设置为false- 参数
-
coalescing- 如果生成的解析器将CDATA节点转换为Text节点并将其附加到相邻(如果有)文本节点,coalescingtrue;否则为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。 否则是假的。
-
setAttribute
public abstract void setAttribute(String name, Object value) throws IllegalArgumentException
允许用户在底层实现上设置特定属性。实现JAXP 1.5或更高版本的所有实现都需要支持
XMLConstants.ACCESS_EXTERNAL_DTD和XMLConstants.ACCESS_EXTERNAL_SCHEMA属性。- 设置
XMLConstants.ACCESS_EXTERNAL_DTD属性会限制对外部DTD的访问,外部实体引用属性指定的协议。 如果由于此属性的限制而在解析期间拒绝访问,则SAXException将由DocumentBuilder定义的解析方法抛出。 - 设置
XMLConstants.ACCESS_EXTERNAL_SCHEMA字段会将 schemaLocation属性设置的外部架构的访问权限限制为属性指定的协议。 如果由于此属性的限制而在解析期间拒绝访问,则SAXException将定义的解析方法将抛出SAXException。
- 参数
-
name- 属性的名称。 -
value- 属性的值。 - 异常
-
IllegalArgumentException- 如果底层实现无法识别该属性,则抛出此异常。
- 设置
-
getAttribute
public abstract Object getAttribute(String name) throws IllegalArgumentException
允许用户检索底层实现的特定属性。- 参数
-
name- 属性的名称。 - 结果
- value属性的值。
- 异常
-
IllegalArgumentException- 如果底层实现无法识别该属性,则抛出此异常。
-
setFeature
public abstract void setFeature(String name, boolean value) throws ParserConfigurationException
设置此工厂创建的DocumentBuilderFactory和DocumentBuilder的功能。功能名称完全限定
URIs。 实现可以定义自己的功能。 一个ParserConfigurationException如果这是抛出DocumentBuilderFactory或DocumentBuilder的IT创建不支持该功能。DocumentBuilderFactory可能会公开特征值但无法更改其状态。所有实现都需要支持
XMLConstants.FEATURE_SECURE_PROCESSING功能。 当功能是:-
true:实现将限制XML处理以符合实现限制。 示例包括实体扩展限制和消耗大量资源的XML Schema构造。 如果出于安全原因限制XML处理,则将通过调用已注册的ErrorHandler.fatalError(SAXParseException exception)来报告。 见DocumentBuilder.setErrorHandler(org.xml.sax.ErrorHandler errorHandler)。 -
false:实现将根据XML规范处理XML,而不考虑可能的实现限制。
- 参数
-
name- 功能名称。 -
value- 功能状态为true或false。 - 异常
-
ParserConfigurationException- 如果这个DocumentBuilderFactory或它创建的DocumentBuilder不能支持此功能。 -
NullPointerException- 如果name参数为null。 - 从以下版本开始:
- 1.5
-
-
getFeature
public abstract boolean getFeature(String name) throws ParserConfigurationException
获取指定功能的状态。功能名称完全限定
URIs。 实现可以定义自己的功能。 一个ParserConfigurationException如果这是抛出DocumentBuilderFactory或DocumentBuilder的IT创建不支持该功能。DocumentBuilderFactory可能会公开某个功能值但无法更改其状态。- 参数
-
name- 功能名称。 - 结果
- 命名功能的状态。
- 异常
-
ParserConfigurationException- 如果这个DocumentBuilderFactory或它创建的DocumentBuilder不能支持此功能。 - 从以下版本开始:
- 1.5
-
getSchema
public Schema getSchema()
获取通过setSchema(Schema schema)方法指定的Schema对象。- 结果
-
最后通过
setSchema(Schema)方法设置的Schema对象,如果自创建DocumentBuilderFactory后未调用该方法,则返回null。 - 异常
-
UnsupportedOperationException- 实现未覆盖此方法时。 - 从以下版本开始:
- 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处理设置为true或false - 异常
-
UnsupportedOperationException- 当实现未覆盖此方法时。 - 从以下版本开始:
- 1.5
-
isXIncludeAware
public boolean isXIncludeAware()
获取XInclude处理的状态。- 结果
- XInclude处理的当前状态
- 异常
-
UnsupportedOperationException- 实现未覆盖此方法时。 - 从以下版本开始:
- 1.5
-
-