public abstract class DocumentBuilderFactory extends Object
Modifier | Constructor and Description |
---|---|
protected |
DocumentBuilderFactory()
受保护的构造函数以防止实例化。
|
Modifier and Type | Method and Description |
---|---|
abstract Object |
getAttribute(String name)
允许用户检索底层实现的特定属性。
|
abstract boolean |
getFeature(String name)
获取命名功能的状态。
|
Schema |
getSchema()
获取通过 setSchema(Schema schema) 方法指定的Schema 对象。
|
boolean |
isCoalescing()
指示工厂是否配置为生成将CDATA节点转换为文本节点并将其附加到相邻(如果有)文本节点)的解析器。
|
boolean |
isExpandEntityReferences()
指示工厂是否配置为生成扩展实体引用节点的解析器。
|
boolean |
isIgnoringComments()
指示工厂是否配置为生成忽略注释的解析器。
|
boolean |
isIgnoringElementContentWhitespace()
指示工厂是否配置为生成忽略元素内容中的可忽略空白的解析器。
|
boolean |
isNamespaceAware()
指示工厂是否配置为生成名称空间感知的解析器。
|
boolean |
isValidating()
指示工厂是否配置为生成在解析期间验证XML内容的解析器。
|
boolean |
isXIncludeAware()
获取XInclude处理的状态。
|
abstract DocumentBuilder |
newDocumentBuilder()
使用当前配置的参数创建一个新的 DocumentBuilder 实例。
|
static DocumentBuilderFactory |
newInstance()
获得一个新的一个
DocumentBuilderFactory 实例。
|
static DocumentBuilderFactory |
newInstance(String factoryClassName, ClassLoader classLoader)
从类名获取一个新的实例
DocumentBuilderFactory 。
|
abstract void |
setAttribute(String name, Object value)
允许用户在底层实现上设置特定属性。
|
void |
setCoalescing(boolean coalescing)
指定此代码生成的解析器将CDATA节点转换为文本节点并将其附加到相邻(如果有的话)文本节点。
|
void |
setExpandEntityReferences(boolean expandEntityRef)
指定此代码生成的解析器将扩展实体引用节点。
|
abstract void |
setFeature(String name, boolean value)
为这个工厂创建的
DocumentBuilderFactory 和
DocumentBuilder 设置了一个功能。
|
void |
setIgnoringComments(boolean ignoreComments)
指定此代码生成的解析器将忽略注释。
|
void |
setIgnoringElementContentWhitespace(boolean whitespace)
指定此工厂创建的解析器必须在解析XML文档时消除元素内容中的空格(有时称为“可忽略的空白”)(请参阅XML Rec 2.10)。
|
void |
setNamespaceAware(boolean awareness)
指定此代码生成的解析器将为XML命名空间提供支持。
|
void |
setSchema(Schema schema)
将 Schema 设置为由此工厂创建的解析器使用。
|
void |
setValidating(boolean validating)
指定此代码生成的解析器将在文档解析时验证文档。
|
void |
setXIncludeAware(boolean state)
设置XInclude处理的状态。
|
protected DocumentBuilderFactory()
受保护的构造函数以防止实例化。 使用newInstance()
。
public static DocumentBuilderFactory newInstance()
DocumentBuilderFactory
。
这个静态方法创建一个新的工厂实例。
此方法使用以下有序查找过程来确定要加载的DocumentBuilderFactory
实现类:
javax.xml.parsers.DocumentBuilderFactory
系统属性。 java.util.Properties
格式,包含实现类的完全限定名称,其中键为上面定义的系统属性。 jaxp.properties文件由JAXP实现只读一次,然后将其缓存以备将来使用。 如果文件第一次尝试读取文件不存在,则不再进一步检查其存在。 在第一次读取jaxp.properties之后,无法更改任何属性的值。 ServiceLoader
类定义的服务提供商加载工具,使用default loading mechanism尝试定位并加载服务的实现 :服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null, 那么将使用system class loader 。 DocumentBuilderFactory
它可以使用工厂来配置和获取解析器实例。
设置jaxp.debug
系统属性将导致此方法打印大量调试消息到System.err
关于它正在做什么和它在哪里看。
如果您有问题加载DocumentBuilder
s,请尝试:
java -Djaxp.debug=1 YourProgram ....
DocumentBuilderFactory
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。
public static DocumentBuilderFactory newInstance(String factoryClassName, ClassLoader classLoader)
从类名获取一个新的实例DocumentBuilderFactory
。 在类路径中有多个提供程序时,此功能很有用。 它可以更好地控制应用程序,因为它可以指定应该加载哪个提供程序。
一旦应用程序获得了对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
,或工厂类无法加载,实例化。
newInstance()
public abstract DocumentBuilder newDocumentBuilder() throws ParserConfigurationException
DocumentBuilder
实例。
ParserConfigurationException
- 如果无法创建满足所请求配置的DocumentBuilder。
public void setNamespaceAware(boolean awareness)
false
awareness
- 如果生成的解析器将为XML命名空间提供支持,则为true;
否则为假。
public void setValidating(boolean validating)
false
。
需要注意的是“验证”在这里是指a validating parser如XML推荐定义。 换句话说,它基本上只是控制DTD验证。 (JAXP 1.2中定义的遗留的两个属性除外)
要使用现代模式语言(如W3C XML Schema或RELAX NG而不是DTD),您可以通过离开setValidating(boolean)
方法false
将该解析器配置为非验证解析器,然后使用setSchema(Schema)
方法将模式与解析器相关联。
validating
- 如果生成的解析器将在验证文档时被解析,则为true;
否则为假。
public void setIgnoringElementContentWhitespace(boolean whitespace)
false
。
whitespace
- 如果创建的解析器在解析XML文档时必须消除元素内容中的whitespace
,则为true;
否则为假。
public void setExpandEntityReferences(boolean expandEntityRef)
true
expandEntityRef
- 如果生成的解析器将扩展实体引用节点,则为true;
否则为假。
public void setIgnoringComments(boolean ignoreComments)
指定此代码生成的解析器将忽略注释。 默认情况下,该值设置为false
。
ignoreComments
-
boolean
值在处理过程中忽略注释
public void setCoalescing(boolean coalescing)
false
coalescing
- 如果生成的解析器将CDATA节点转换为文本节点并将其附加到相邻(如果有的话)文本节点,则为true;
否则为假。
public boolean isNamespaceAware()
public boolean isValidating()
public boolean isIgnoringElementContentWhitespace()
public boolean isExpandEntityReferences()
public boolean isIgnoringComments()
public boolean isCoalescing()
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
将被DocumentBuilder
定义的解析方法抛出。
name
- 属性的名称。
value
- 属性的值。
IllegalArgumentException
- 如果底层的实现无法识别属性,则抛出。
public abstract Object getAttribute(String name) throws IllegalArgumentException
name
- 属性的名称。
IllegalArgumentException
- 如果底层实现无法识别属性,则抛出。
public abstract void setFeature(String name, boolean value) throws ParserConfigurationException
设置此工厂创建的DocumentBuilderFactory
和DocumentBuilder
的功能。
功能名称完全符合URI
s。 实现可以定义自己的特征。 如果这个DocumentBuilderFactory
或其创建的DocumentBuilder
s无法支持该功能,则会抛出一个ParserConfigurationException
。 DocumentBuilderFactory
可以公开特征值,但无法更改其状态。
所有实现都需要支持XMLConstants.FEATURE_SECURE_PROCESSING
功能。 当功能是:
true
:实现将限制XML处理以符合实现限制。 示例包括enity扩展限制和消耗大量资源的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
参数为空。
public abstract boolean getFeature(String name) throws ParserConfigurationException
获取命名功能的状态。
功能名称完全符合URI
s。 实现可以定义自己的特征。 如果这个DocumentBuilderFactory
或其创建的DocumentBuilder
s无法支持该功能,则会抛出一个ParserConfigurationException
。 DocumentBuilderFactory
可以公开特征值,但不能更改其状态。
name
- 功能名称。
ParserConfigurationException
- 如果这个
DocumentBuilderFactory
或其创建的
DocumentBuilder
无法支持此功能。
public Schema getSchema()
setSchema(Schema schema)
方法指定的Schema
对象。
setSchema(Schema)
方法最后设置的Schema
对象,如果自创建DocumentBuilderFactory
以来未调用该方法,则为null。
UnsupportedOperationException
- 实现时不覆盖此方法。
public void setSchema(Schema schema)
将Schema
设置为由此工厂创建的解析器使用。
当Schema
为非空值时,解析器将使用从其创建的验证器在将信息传递到应用程序之前验证文档。
当验证器发现错误时,解析器负责将其报告给用户指定的ErrorHandler
(或者如果错误处理程序未设置,忽略它们或抛出它们),就像解析器本身发现的任何其他错误一样。 换句话说,如果设置了用户指定的ErrorHandler
,则必须收到这些错误,如果不是,则必须根据实现特定的默认错误处理规则进行处理。
验证器可以修改解析的结果(例如通过添加在文档中缺少的默认值),并且解析器负责确保应用程序将接收修改的DOM树。
Initialy,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
- 实现时不覆盖此方法。
public void setXIncludeAware(boolean state)
设置XInclude处理的状态。
如果在文档实例中找到XInclude标记,则应按照XML Inclusions (XInclude) Version 1.0中的规定进行处理 。
XInclude处理默认为false
。
state
- 将XInclude处理设置为
true
或
false
UnsupportedOperationException
- 实现时不覆盖此方法。
public boolean isXIncludeAware()
获取XInclude处理的状态。
UnsupportedOperationException
- 实现时不覆盖此方法。