- java.lang.Object
-
- javax.xml.validation.ValidatorHandler
-
- 实现的所有接口
-
ContentHandler
public abstract class ValidatorHandlerextends Objectimplements ContentHandler
适用于SAX流的流式验证器。ValidatorHandler
对象不是线程安全的,不可重入。 换句话说,应用程序有责任确保在任何给定时间不从多个线程使用一个ValidatorHandler
对象。ValidatorHandler
检查SAX事件是否遵循相关Schema
中描述的约束集,并且还可以修改SAX事件(例如通过添加默认值等)ValidatorHandler
从延伸ContentHandler
,但它细化了基本ContentHandler
按以下方式:- 的startElement /事件的endElement必须接收非空字符串为
uri
,localName
,并qname
,即使SAX允许他们中的一些是空的。 同样,用户指定的ContentHandler
将为所有三个参数接收非null字符串。 - 应用程序必须确保正确调用
ValidatorHandler
的ContentHandler.startPrefixMapping(String,String)
和ContentHandler.endPrefixMapping(String)
。 同样,用户指定的ContentHandler
将接收startPrefixMapping / endPrefixMapping事件。 如果ValidatorHandler
引入了其他命名空间绑定,则用户指定的ContentHandler
将接收其他startPrefixMapping / endPrefixMapping事件。 -
Attributes
对于ContentHandler.startElement(String,String,String,Attributes)
方法可能包含也可能不包含xmlns *属性。
每次调用startDocument方法时,都会自动重置
ValidatorHandler
。公认的属性和功能
此规范定义了所有
ValidatorHandler
实现必须识别的以下功能。http://xml.org/sax/features/namespace-prefixes
此功能控制
ValidatorHandler
如何引入原始SAX事件流中不存在的命名空间绑定。 当此功能设置为true时,必须确保用户的ContentHandler
将在5144681112613回调的Attributes
对象中看到相应的xmlns*
属性。 否则,xmlns*
属性不能被添加到Attributes
则传递到用户指定ContentHandler
。(请注意,无论此切换如何,命名空间绑定始终通过
ContentHandler.startPrefixMapping(String,String)
和用户指定的51446812323671的ContentHandler.endPrefixMapping(String)
方法通知应用程序。)请注意,此功能不影响的方式
ValidatorHandler
接收SAX事件。 它只是改变了它增加SAX事件的方式。默认情况下,此功能设置为
false
。- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
ValidatorHandler()
派生类的构造函数。
-
方法摘要
所有方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 abstract ContentHandler
getContentHandler()
获取ContentHandler
,它接收增强的验证结果。abstract ErrorHandler
getErrorHandler()
获取当前ErrorHandler
设置为这个ValidatorHandler
。boolean
getFeature(String name)
查找功能标志的值。Object
getProperty(String name)
查找属性的值。abstract LSResourceResolver
getResourceResolver()
获取当前LSResourceResolver
设置为这个ValidatorHandler
。abstract TypeInfoProvider
getTypeInfoProvider()
abstract void
setContentHandler(ContentHandler receiver)
设置ContentHandler
,它接收增强的验证结果。abstract void
setErrorHandler(ErrorHandler errorHandler)
设置ErrorHandler
以接收验证期间遇到的错误。void
setFeature(String name, boolean value)
为此ValidatorHandler
设置功能。void
setProperty(String name, Object object)
设置属性的值。abstract void
setResourceResolver(LSResourceResolver resourceResolver)
设置LSResourceResolver
以在验证剧集中自定义资源分辨率。
-
-
-
方法详细信息
-
setContentHandler
public abstract void setContentHandler(ContentHandler receiver)
设置ContentHandler
,它接收增强的验证结果。当
ContentHandler
指定,一ValidatorHandler
将作为过滤器和基本输入事件复制到指定ContentHandler
。在这样做时,
ValidatorHandler
可以修改事件,例如通过添加默认属性。ValidatorHandler
可以在某种程度上缓冲事件,但是为了允许解析器使用ValidatorHandler
,必须满足以下要求。- 当
ContentHandler.startElement(String, String, String, Attributes)
,ContentHandler.endElement(String, String, String)
,ContentHandler.startDocument()
,或ContentHandler.endDocument()
被在调用ValidatorHandler
,在用户指定的相同的方法ContentHandler
必须调用回调返回之前相同的事件。 -
ValidatorHandler
可能不会引入输入中不存在的新元素。 -
ValidatorHandler
可能不会删除输入中存在的属性。
当指定的
ContentHandler
上的回调方法抛出异常时,必须从ValidatorHandler
抛出相同的异常对象。 不应通知ErrorHandler
此类例外情况。即使在验证过程中也可以调用此方法。
- 参数
-
receiver
- AContentHandler
或空值。
- 当
-
getContentHandler
public abstract ContentHandler getContentHandler()
获取ContentHandler
,它接收增强的验证结果。- 结果
- 此方法返回通过
getContentHandler()
方法最后设置的对象,如果自ValidatorHandler
创建以来从未调用过该方法,则返回null。 - 另请参见:
-
setContentHandler(ContentHandler)
-
setErrorHandler
public abstract void setErrorHandler(ErrorHandler errorHandler)
设置ErrorHandler
以接收验证期间遇到的错误。错误处理程序可用于在验证期间自定义错误处理过程。 设置
ErrorHandler
时,验证期间发现的错误将首先发送到ErrorHandler
。错误处理程序可以通过从处理程序中抛出
SAXException
来立即中止进一步的验证。 或者例如,它可以向屏幕打印错误,并尝试通过从ErrorHandler
正常返回来继续验证如果任何
Throwable
选自抛出ErrorHandler
,同样Throwable
对象将朝向调用堆栈的根被抛出。ValidatorHandler
不允许先抛出SAXException
而不先将其报告给ErrorHandler
。当
ErrorHandler
为null时,实现的行为就像设置了以下ErrorHandler
:class DraconianErrorHandler implements
ErrorHandler
{ public void fatalError(SAXParseException
e ) throwsSAXException
{ throw e; } public void error(SAXParseException
e ) throwsSAXException
{ throw e; } public void warning(SAXParseException
e ) throwsSAXException
{ // noop } }创建新的
ValidatorHandler
对象时,最初将此字段设置为null。- 参数
-
errorHandler
- 要设置的新错误处理程序。 此参数可以为null。
-
getErrorHandler
public abstract ErrorHandler getErrorHandler()
获取当前ErrorHandler
设置为这个ValidatorHandler
。- 结果
- 此方法返回通过
setErrorHandler(ErrorHandler)
方法最后设置的对象,如果自ValidatorHandler
创建以来从未调用过该方法,则返回null。 - 另请参见:
-
setErrorHandler(ErrorHandler)
-
setResourceResolver
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
设置LSResourceResolver
以在验证剧集中自定义资源分辨率。ValidatorHandler
在验证时需要定位外部资源时使用LSResourceResolver
,尽管究竟是什么构成“定位外部资源”取决于每种模式语言。当
LSResourceResolver
为null时,实现的行为就像设置了以下LSResourceResolver
:class DumbLSResourceResolver implements
LSResourceResolver
{ publicLSInput
resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }如果
LSResourceResolver
抛出RuntimeException
(或其派生类的实例),则ValidatorHandler
将中止解析,并且validate
方法的调用者将收到相同的RuntimeException
。创建新的
ValidatorHandler
对象时,最初将此字段设置为null。- 参数
-
resourceResolver
- 要设置的新资源解析程序。 此参数可以为null。
-
getResourceResolver
public abstract LSResourceResolver getResourceResolver()
获取当前LSResourceResolver
设置为这个ValidatorHandler
。- 结果
- 此方法返回通过
setResourceResolver(LSResourceResolver)
方法最后设置的对象,如果从ValidatorHandler
创建以来从未调用过该方法,则返回null。 - 另请参见:
-
setErrorHandler(ErrorHandler)
-
getTypeInfoProvider
public abstract TypeInfoProvider getTypeInfoProvider()
获得此ValidatorHandler
的TypeInfoProvider
实现。可以在解析期间查询所获得的
TypeInfoProvider
以访问由验证器确定的类型信息。某些模式语言没有定义类型的概念,对于这些语言,可能不支持此方法。 但是,为了符合此规范,W3C XML Schema 1.0的实现必须支持此操作。
- 结果
- 如果验证器/模式语言不支持
TypeInfo
的概念,则返回null 。 否则为非null有效TypeInfoProvider
。
-
getFeature
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
查找功能标志的值。功能名称是任何完全限定的URI。
ValidatorHandler
可以识别功能名称,但暂时无法返回其值。 某些特征值可能仅在特定上下文中可用,例如在验证之前,期间或之后。实现者可以免费(并鼓励)使用基于自己的URI构建的名称来发明自己的功能。
- 参数
-
name
- 功能名称,它是一个非null的完全限定URI。 - 结果
- 功能的当前值(true或false)。
- 异常
-
SAXNotRecognizedException
- 如果无法分配或检索特征值。 -
SAXNotSupportedException
- 当ValidatorHandler
识别出功能名称但此时无法确定其值。 -
NullPointerException
- 时name
是null
。 - 另请参见:
-
setFeature(String, boolean)
-
setFeature
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
为此
ValidatorHandler
设置功能。功能可用于控制
ValidatorHandler
解析模式的方式。 功能名称是任何完全限定的URI。SchemaFactory
可以公开特征值但无法更改当前值。 某些特征值可能仅在特定上下文中是不可变的或可变的,例如在验证之前,期间或之后。所有实现都需要支持
XMLConstants.FEATURE_SECURE_PROCESSING
功能。 当功能是:-
true
:实现将限制XML处理以符合实现限制。 示例包括实体扩展限制和消耗大量资源的XML Schema构造。 如果出于安全原因限制XML处理,则将通过对已注册的ErrorHandler.fatalError(SAXParseException exception)
的调用来报告。 见setErrorHandler(ErrorHandler errorHandler)
。 -
false
:实现将根据XML规范处理XML,而不考虑可能的实现限制。
- 参数
-
name
- 功能名称,它是一个非null的完全限定URI。 -
value
- 要求的要素值(true或false)。 - 异常
-
SAXNotRecognizedException
- 如果无法分配或检索特征值。 -
SAXNotSupportedException
- 当ValidatorHandler
识别出功能名称但无法设置请求的值时。 -
NullPointerException
- 时name
是null
。 - 另请参见:
-
getFeature(String)
-
-
setProperty
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
设置属性的值。属性名称是任何完全限定的URI。
ValidatorHandler
可以识别属性名称但无法更改当前值。 某些属性值可能仅在特定上下文中是不可变的或可变的,例如在验证之前,期间或之后。ValidatorHandler
s不需要识别设置任何特定的属性名称。- 参数
-
name
- 属性名称,它是一个非null的完全限定URI。 -
object
- 属性的请求值。 - 异常
-
SAXNotRecognizedException
- 如果无法分配或检索属性值。 -
SAXNotSupportedException
- 当ValidatorHandler
识别属性名称但无法设置请求的值时。 -
NullPointerException
- 时name
是null
。
-
getProperty
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
查找属性的值。属性名称是任何完全限定的URI。
ValidatorHandler
可以识别属性名称,但暂时无法返回其值。 某些属性值可能仅在特定上下文中可用,例如在验证之前,期间或之后。ValidatorHandler
s不需要识别任何特定的属性名称。实现者可以免费(并鼓励)使用基于自己的URI构建的名称来创建自己的属性。
- 参数
-
name
- 属性名称,它是一个非null的完全限定URI。 - 结果
- 属性的当前值。
- 异常
-
SAXNotRecognizedException
- 如果无法分配或检索属性值。 -
SAXNotSupportedException
- 当XMLReader识别属性名称但此时无法确定其值时。 -
NullPointerException
- 时name
是null
。 - 另请参见:
-
setProperty(String, Object)
-
-