public abstract class ValidatorHandler extends Object implements ContentHandler
一个ValidatorHandler对象不是线程安全的,不能重入。 换句话说,应用程序的责任是确保在任何给定时间从多个线程中使用一个ValidatorHandler对象。
ValidatorHandler检查SAX事件是否遵循相关联的Schema中描述的约束集 ,此外,它可以修改SAX事件(例如通过添加默认值等)
ValidatorHandler从延伸ContentHandler ,但它细化了基本ContentHandler按以下方式:
uri , localName和qname ,即使SAX允许他们中的一些是空的。 类似地,用户指定的ContentHandler将为所有三个参数接收非空字符串。 ValidatorHandler的ContentHandler.startPrefixMapping(String,String)和ContentHandler.endPrefixMapping(String)正确调用。 类似地,用户指定的ContentHandler将接收startPrefixMapping / endPrefixMapping事件。 如果ValidatorHandler引入了额外的命名空间绑定,用户指定的ContentHandler将会收到额外的startPrefixMapping / endPrefixMapping事件。 Attributes为ContentHandler.startElement(String,String,String,Attributes)方法可能包含或不包含xmlns *属性。 甲ValidatorHandler自动复位每次调用startDocument方法时间。
该规范定义了所有ValidatorHandler实现必须识别的以下功能。
http://xml.org/sax/features/namespace-prefixes 此功能控制ValidatorHandler如何引入原始SAX事件流中不存在的命名空间绑定。 当此功能设置为true,则必须确保用户ContentHandler会看到相应xmlns*属性在Attributes的对象ContentHandler.startElement(String,String,String,Attributes)回调。 否则, xmlns*属性不能被添加到Attributes则传递到用户指定的ContentHandler 。
(请注意,无论此开关的,名称空间绑定总是通过通知应用程序ContentHandler.startPrefixMapping(String,String)种ContentHandler.endPrefixMapping(String)所述的方法ContentHandler由用户指定)。
请注意,此功能不影响的方式ValidatorHandler接收SAX事件。 它只是改变了增加SAX事件的方式。
此功能默认设置为false 。
| Modifier | Constructor and Description |
|---|---|
protected |
ValidatorHandler()
派生类的构造方法
|
| Modifier and Type | Method and Description |
|---|---|
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()
获得这 ValidatorHandler的 TypeInfoProvider 实现 。
|
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以在验证集中自定义资源分辨率。
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitcharacters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMappingpublic 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 - A ContentHandler或空值。
public abstract ContentHandler getContentHandler()
ContentHandler接收扩充的验证结果。
getContentHandler()方法最后设置的对象,如果该方法从未调用,则为null,因为此ValidatorHandler已创建。
setContentHandler(ContentHandler)
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler以接收验证期间遇到的错误。
错误处理程序可用于在验证期间自定义错误处理过程。 当设置ErrorHandler时,验证期间发现的错误将首先发送到ErrorHandler 。
错误处理程序可以通过从处理程序中抛出SAXException来立即中止进一步的验证。 或者,例如,它可以在屏幕上打印错误,并尝试通过从ErrorHandler正常返回来继续验证
如果从ErrorHandler抛出Throwable ,那么相同的Throwable对象将被抛向调用堆栈的根目录。
ValidatorHandler不允许抛出SAXException没有首先报告给ErrorHandler 。
当ErrorHandler为null时,实现将表现为如下设置以下ErrorHandler :
class DraconianErrorHandler implements ErrorHandler {
public void fatalError( SAXParseException e ) throws SAXException {
throw e;
}
public void error( SAXParseException e ) throws SAXException {
throw e;
}
public void warning( SAXParseException e ) throws SAXException {
// noop
}
}
当创建一个新的ValidatorHandler对象时,最初该字段设置为null。
errorHandler - 要设置的新的错误处理程序。
此参数可以为null。
public abstract ErrorHandler getErrorHandler()
ErrorHandler设置为ValidatorHandler 。
setErrorHandler(ErrorHandler)方法,则返回null,因为这是方法从未被称为ValidatorHandler创造。
setErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver以在验证集中定制资源分辨率。
ValidatorHandler使用LSResourceResolver,当需要定位外部资源的同时进行验证,虽然完全是什么构成“定位外部资源”取决于每种架构语言。
当LSResourceResolver为null时,实现将表现为如下设置以下LSResourceResolver :
class DumbLSResourceResolver implements LSResourceResolver {
public LSInput resolveResource(
String publicId, String systemId, String baseURI) {
return null; // always return null
}
}
如果一个RuntimeException (或其派生类的实例)抛出RuntimeException ,那么ValidatorHandler将中止解析,并且validate方法的调用者将收到相同的RuntimeException 。
当创建一个新的ValidatorHandler对象时,最初该字段设置为null。
resourceResolver - 要设置的新资源解析器。
此参数可以为null。
public abstract LSResourceResolver getResourceResolver()
LSResourceResolver设置为ValidatorHandler 。
setResourceResolver(LSResourceResolver)方法,则返回null,因为这是方法从未被称为ValidatorHandler创造。
setErrorHandler(ErrorHandler)
public abstract TypeInfoProvider getTypeInfoProvider()
TypeInfoProvider这个ValidatorHandler的实现 。
获得的TypeInfoProvider可以在解析期间查询以访问由验证器确定的类型信息。
某些模式语言没有定义类型的概念,对于这些语言,可能不支持此方法。 然而,为了符合本规范,W3C XML Schema 1.0的实现必须支持此操作。
TypeInfo的概念, 则为null 。
否则为非空有效TypeInfoProvider 。
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是任何完全限定的URI。 ValidatorHandler可以识别功能名称,但暂时无法返回其值。 某些特征值可能仅在特定上下文中可用,例如在验证之前,期间或之后。
实施者是免费(并被鼓励)发明自己的功能,使用自己的URI建立的名称。
name - 特征名称,它是非空的完全限定URI。
SAXNotRecognizedException - 如果不能分配或检索到特征值。
SAXNotSupportedException - 当ValidatorHandler识别功能名称,但此时无法确定其值。
NullPointerException -
name为
null 。
setFeature(String, boolean)
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
为这个ValidatorHandler设置一个功能。
功能可以用来控制一个ValidatorHandler解析模式的方式。 功能名称是任何完全限定的URI。 SchemaFactory可以公开特征值,但无法更改当前值。 一些特征值可以是不可变的或可变的仅在特定的上下文中,例如验证之前,期间或之后。
所有实现都需要支持XMLConstants.FEATURE_SECURE_PROCESSING功能。 当功能是:
true :实现将限制XML处理以符合实施限制。 示例包括enity扩展限制和消耗大量资源的XML Schema结构。 如果出于安全考虑,XML处理受到限制,将通过对已注册的ErrorHandler.fatalError(SAXParseException exception)的呼叫进行报告。 见setErrorHandler(ErrorHandler errorHandler) 。 false :实现将根据XML规范处理XML,而不考虑可能的实现限制。 name - 特征名称,它是非空的完全限定的URI。
value - 要素的值(true或false)。
SAXNotRecognizedException - 如果无法分配或检索到特征值。
SAXNotSupportedException - 当ValidatorHandler识别功能名称但无法设置请求的值时。
NullPointerException - 当
name是
null 。
getFeature(String)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的URI。 ValidatorHandler可以识别属性名称,但无法更改当前值。 某些属性值可能仅在特定上下文中是不可变的或可变的,例如验证之前,之中或之后。
ValidatorHandler不需要识别设置任何特定的属性名称。
name - 属性名称,它是非空的完全限定的URI。
object - 该属性的请求的值。
SAXNotRecognizedException - 如果属性值无法分配或检索。
SAXNotSupportedException - ValidatorHandler识别属性名称但无法设置请求的值时。
NullPointerException - 当
name是
null 。
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的URI。 ValidatorHandler可以识别属性名称,但暂时无法返回其值。 某些属性值可能仅在特定上下文中可用,例如验证之前,期间或之后。
ValidatorHandler不需要识别任何特定的属性名称。
实施者是免费的(并被鼓励)发明自己的属性,使用自己的URI建立的名称。
name - 属性名称,它是非空的完全限定的URI。
SAXNotRecognizedException - 如果不能分配或检索属性值。
SAXNotSupportedException - 当XMLReader识别属性名称,但此时无法确定其值。
NullPointerException - 当时
name是
null 。
setProperty(String, Object)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.