public abstract class ValidatorHandler
extends Object
implements ContentHandler
java.lang.Object | |
↳ | javax.xml.validation.ValidatorHandler |
流式验证器,适用于SAX流。
一个ValidatorHandler
对象是一个线程不安全的非重入对象。 换句话说,应用程序有责任确保一个ValidatorHandler
对象在任何给定时间都不能从多个线程中使用。
ValidatorHandler
检查SAX事件是否遵循关联的 Schema
描述的约束 Schema
,并且还可以修改SAX事件(例如通过添加默认值等)
ValidatorHandler
从延伸 ContentHandler
,但它细化了基本 ContentHandler
按以下方式:
uri
, localName
, and qname
, even though SAX allows some of them to be null. Similarly, the user-specified ContentHandler
will receive non-null Strings for all three parameters. ValidatorHandler
's startPrefixMapping(String, String)
and endPrefixMapping(String)
are invoked properly. Similarly, the user-specified ContentHandler
will receive startPrefixMapping/endPrefixMapping events. If the ValidatorHandler
introduces additional namespace bindings, the user-specified ContentHandler
will receive additional startPrefixMapping/endPrefixMapping events. Attributes
for the startElement(String, String, String, Attributes)
method may or may not include xmlns* attributes. 每次调用startDocument方法时,都会自动重置 ValidatorHandler
。
该规范定义了以下必须被所有 ValidatorHandler
实现识别的功能。
http://xml.org/sax/features/namespace-prefixes
此功能控制ValidatorHandler
如何引入原始SAX事件流中不存在的名称空间绑定。 如果此功能设置为true,则必须确保用户的ContentHandler
将在startElement(String, String, String, Attributes)
回调的Attributes
对象中看到相应的xmlns*
属性。 否则, xmlns*
属性不能被添加到Attributes
则传递到用户指定的ContentHandler
。
(请注意,无论此开关如何,名称空间绑定总是通过用户指定的 ContentHandler
startPrefixMapping(String, String)
和 endPrefixMapping(String)
方法通知给应用程序。)
请注意,此功能不影响道路ValidatorHandler
接收SAX事件。 它仅仅改变了它增加SAX事件的方式。
该功能默认设置为 false
。
Protected constructors |
|
---|---|
ValidatorHandler() 派生类的构造函数。 |
Public methods |
|
---|---|
abstract ContentHandler |
getContentHandler() 获取接收到增强的验证结果的 |
abstract ErrorHandler |
getErrorHandler() 获取当前 |
boolean |
getFeature(String name) 查找功能标志的值。 |
Object |
getProperty(String name) 查找一个属性的值。 |
abstract LSResourceResolver |
getResourceResolver() 获取当前 |
abstract TypeInfoProvider |
getTypeInfoProvider() 获得此 |
abstract void |
setContentHandler(ContentHandler receiver) 设置接收增强的验证结果的 |
abstract void |
setErrorHandler(ErrorHandler errorHandler) 设置 |
void |
setFeature(String name, boolean value) 设置功能标志的值。 |
void |
setProperty(String name, Object object) 设置属性的值。 |
abstract void |
setResourceResolver(LSResourceResolver resourceResolver) 设置 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
|
From interface org.xml.sax.ContentHandler
|
ValidatorHandler ()
派生类的构造函数。
构造函数什么都不做。
派生类必须创建包含 null ErrorHandler
和 null LSResourceResolver
ValidatorHandler
对象。
ContentHandler getContentHandler ()
获取接收到增强的验证结果的 ContentHandler
。
Returns | |
---|---|
ContentHandler |
This method returns the object that was last set through the getContentHandler() method, or null if that method has never been called since this ValidatorHandler has created. |
ErrorHandler getErrorHandler ()
获取当前 ErrorHandler
设置为这个 ValidatorHandler
。
Returns | |
---|---|
ErrorHandler |
This method returns the object that was last set through the setErrorHandler(ErrorHandler) method, or null if that method has never been called since this ValidatorHandler has created. |
boolean getFeature (String name)
查找功能标志的值。
功能名称是任何完全限定的URI。 ValidatorHandler
可能会识别功能名称,但暂时无法返回其值。 某些功能值只能在特定上下文中使用,例如在验证之前,期间或之后。
实现者可以免费(并鼓励)使用构建在他们自己的URI上的名称来创建自己的特性。
Parameters | |
---|---|
name |
String : The feature name, which is a non-null fully-qualified URI. |
Returns | |
---|---|
boolean |
The current value of the feature (true or false). |
Throws | |
---|---|
SAXNotRecognizedException |
If the feature value can't be assigned or retrieved. |
SAXNotSupportedException |
When the ValidatorHandler recognizes the feature name but cannot determine its value at this time. |
NullPointerException |
When the name parameter is null. |
也可以看看:
Object getProperty (String name)
查找一个属性的值。
属性名称是任何完全限定的URI。 ValidatorHandler
可能会识别属性名称,但暂时无法返回其值。 某些属性值只能在特定的上下文中使用,例如在验证之前,期间或之后。
ValidatorHandler
不需要识别任何特定的属性名称。
实现者可以免费(并鼓励)使用构建在他们自己的URI上的名称来创建他们自己的属性。
Parameters | |
---|---|
name |
String : The property name, which is a non-null fully-qualified URI. |
Returns | |
---|---|
Object |
The current value of the property. |
Throws | |
---|---|
SAXNotRecognizedException |
If the property value can't be assigned or retrieved. |
SAXNotSupportedException |
When the XMLReader recognizes the property name but cannot determine its value at this time. |
NullPointerException |
When the name parameter is null. |
也可以看看:
LSResourceResolver getResourceResolver ()
获取当前 LSResourceResolver
设置为此 ValidatorHandler
。
Returns | |
---|---|
LSResourceResolver |
This method returns the object that was last set through the setResourceResolver(LSResourceResolver) method, or null if that method has never been called since this ValidatorHandler has created. |
TypeInfoProvider getTypeInfoProvider ()
获得此 ValidatorHandler
的 TypeInfoProvider
实施。
可以在解析期间查询获得的 TypeInfoProvider
以访问验证器确定的类型信息。
某些模式语言不定义类型的概念,对于这些语言,可能不支持此方法。 但是,要符合此规范,W3C XML Schema 1.0的实现必须支持此操作。
Returns | |
---|---|
TypeInfoProvider |
null if the validator / schema language does not support the notion of TypeInfo . Otherwise a non-null valid TypeInfoProvider . |
void setContentHandler (ContentHandler receiver)
设置接收到增强的验证结果的 ContentHandler
。
当 ContentHandler
指定,一个 ValidatorHandler
将作为过滤器和基本输入事件复制到指定 ContentHandler
。
这样做, ValidatorHandler
可以修改事件,例如添加默认属性。
一个 ValidatorHandler
可能在某种程度上缓冲事件,但为了允许 ValidatorHandler
被解析器使用,必须满足以下要求。
startElement(String, String, String, Attributes)
, endElement(String, String, String)
, startDocument()
, or endDocument()
are invoked on a ValidatorHandler
, the same method on the user-specified ContentHandler
must be invoked for the same event before the callback returns. ValidatorHandler
may not introduce new elements that were not present in the input. ValidatorHandler
may not remove attributes that were present in the input. 当指定的ContentHandler
上的回调方法引发异常时,必须从ValidatorHandler
抛出相同的异常对象。 不应该通知ErrorHandler
这样的例外。
即使在验证过程中也可以调用此方法。
Parameters | |
---|---|
receiver |
ContentHandler : A ContentHandler or a null value. |
void setErrorHandler (ErrorHandler errorHandler)
设置 ErrorHandler
以接收验证过程中遇到的错误。
错误处理程序可用于在验证期间自定义错误处理过程。 当设置了ErrorHandler
时,验证过程中发现的错误将首先发送到ErrorHandler
。
错误处理程序可以通过从处理程序中抛出SAXException
立即中止进一步验证。 或者,例如,它可以向屏幕输出错误,并尝试通过从ErrorHandler
正常返回来继续验证
如果任何 Throwable
选自抛出 ErrorHandler
,相同的 Throwable
对象将朝向调用堆栈的根被抛出。
ValidatorHandler
不允许扔 SAXException
没有首先将其报告给 ErrorHandler
。
当 ErrorHandler
为空时,实现将表现得好像设置了以下 ErrorHandler
:
class DraconianErrorHandler implementsErrorHandler
{ public void fatalError(SAXParseException
e ) throwsSAXException
{ throw e; } public void error(SAXParseException
e ) throwsSAXException
{ throw e; } public void warning(SAXParseException
e ) throwsSAXException
{ // noop } }
当新的 ValidatorHandler
对象被创建时,最初这个字段被设置为空。
Parameters | |
---|---|
errorHandler |
ErrorHandler : A new error handler to be set. This parameter can be null. |
void setFeature (String name, boolean value)
设置功能标志的值。
功能可用于控制 ValidatorHandler
解析架构的方式,但 ValidatorHandler
不需要识别任何特定的属性名称。
功能名称是任何完全限定的URI。 ValidatorHandler
可能会公开一个特征值,但无法更改当前值。 某些特征值只能在特定上下文中不可变或可变,例如在验证之前,期间或之后。
Parameters | |
---|---|
name |
String : The feature name, which is a non-null fully-qualified URI. |
value |
boolean : The requested value of the feature (true or false). |
Throws | |
---|---|
SAXNotRecognizedException |
If the feature value can't be assigned or retrieved. |
SAXNotSupportedException |
When the ValidatorHandler recognizes the feature name but cannot set the requested value. |
NullPointerException |
When the name parameter is null. |
也可以看看:
void setProperty (String name, Object object)
设置属性的值。
属性名称是任何完全限定的URI。 ValidatorHandler
可能会识别属性名称,但无法更改当前值。 某些属性值只能在特定上下文中不可变或可变,例如在验证之前,期间或之后。
ValidatorHandler
不需要识别设置任何特定的属性名称。
Parameters | |
---|---|
name |
String : The property name, which is a non-null fully-qualified URI. |
object |
Object : The requested value for the property. |
Throws | |
---|---|
SAXNotRecognizedException |
If the property value can't be assigned or retrieved. |
SAXNotSupportedException |
When the ValidatorHandler recognizes the property name but cannot set the requested value. |
NullPointerException |
When the name parameter is null. |
void setResourceResolver (LSResourceResolver resourceResolver)
设置 LSResourceResolver
以在验证期间自定义资源分辨率。
ValidatorHandler
在 LSResourceResolver
时需要定位外部资源时使用 LSResourceResolver
,尽管“定位外部资源”的确切含义取决于每种模式语言。
当 LSResourceResolver
为空时,实现将表现得好像设置了以下 LSResourceResolver
:
class DumbLSResourceResolver implementsLSResourceResolver
{ publicLSInput
resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
如果 LSResourceResolver
引发 RuntimeException
(或其派生类的实例),则 ValidatorHandler
将中止解析,并且 validate
方法的调用方将收到相同的 RuntimeException
。
当一个新的 ValidatorHandler
对象被创建时,最初这个字段被设置为空。
Parameters | |
---|---|
resourceResolver |
LSResourceResolver : A new resource resolver to be set. This parameter can be null. |