Modifier | Constructor and Description |
---|---|
protected |
Validator()
派生类的构造方法
|
Modifier and Type | Method and Description |
---|---|
abstract ErrorHandler |
getErrorHandler()
获得当前 ErrorHandler 设置为Validator 。
|
boolean |
getFeature(String name)
查找特征标记的值。
|
Object |
getProperty(String name)
查找属性的值。
|
abstract LSResourceResolver |
getResourceResolver()
获得当前 LSResourceResolver 设置为Validator 。
|
abstract void |
reset()
将此
Validator 重置为原始配置。
|
abstract void |
setErrorHandler(ErrorHandler errorHandler)
设置 ErrorHandler 以接收在validate 方法调用期间validate 错误。
|
void |
setFeature(String name, boolean value)
设置特征标志的值。
|
void |
setProperty(String name, Object object)
设置属性的值。
|
abstract void |
setResourceResolver(LSResourceResolver resourceResolver)
设置 LSResourceResolver 以在验证集中自定义资源分辨率。
|
void |
validate(Source source)
验证指定的输入。
|
abstract void |
validate(Source source, Result result)
验证指定的输入并将增强的验证结果发送到指定的输出。
|
public abstract void reset()
将此Validator
重置为原始配置。
Validator
被重置为与使用Schema.newValidator()
创建时相同的状态。 reset()
旨在允许现有的Validator
s的重用,从而节省了与创建新的Validator
s相关的资源。
复位Validator
不能保证具有相同的LSResourceResolver
或ErrorHandler
Object
s,例如Object.equals(Object obj)
。 保证功能相当于LSResourceResolver
和ErrorHandler
。
public void validate(Source source) throws SAXException, IOException
这只是validate(Source source, Result result)
的result的result
的null
。
source
- 要验证的XML。
必须是XML文档或XML元素,且不能为null。
为了向后兼容,尝试验证除文档或元素之外的任何内容的结果与实现相关。
实现必须识别和处理输入,或者抛出IllegalArgumentException。
IllegalArgumentException
- 如果
Source
是实现无法验证的XML伪像(例如,处理指令)。
SAXException
- 如果ErrorHandler
投掷SAXException
或发现致命错误,并且ErrorHandler
返回正常。
IOException
- 如果验证器正在处理SAXSource
,底层XMLReader
会抛出IOException
。
NullPointerException
- 如果
source
是
null
。
validate(Source source, Result result)
public abstract void validate(Source source, Result result) throws SAXException, IOException
验证指定的输入并将增强的验证结果发送到指定的输出。
此方法对所接受的类型进行了以下限制 : Source
/Result
。
Source
/ Result
Accepted StreamSource
SAXSource
DOMSource
StAXSource
null
OK OK OK OK StreamResult
OK IllegalArgumentException
IllegalArgumentException
IllegalArgumentException
SAXResult
IllegalArgumentException
OK IllegalArgumentException
IllegalArgumentException
DOMResult
IllegalArgumentException
IllegalArgumentException
OK IllegalArgumentException
StAXResult
IllegalArgumentException
IllegalArgumentException
IllegalArgumentException
OK
要将一个Source
验证成另一种Result
,请使用标识变压器(见TransformerFactory.newTransformer()
)。
验证期间发现的错误发送到指定的ErrorHandler
。
如果文档有效,或者文档包含一些错误,但没有一个是致命的,并且ErrorHandler
没有抛出任何异常,则该方法将正常返回。
source
- 要验证的XML。
必须是XML文档或XML元素,且不能为null。
为了向后兼容,尝试验证除文档或元素之外的任何内容的结果与实现相关。
实现必须识别和处理输入,或者抛出IllegalArgumentException。
result
- 接收(可能扩充的)XML的Result
对象。
如果调用者对此不感兴趣,则此参数可以为null。
请注意,当使用DOMResult
时,验证器可能会将相同的DOM节点从DOMSource
到DOMResult
(在这种情况下为source.getNode()==result.getNode()
),它可能会复制整个DOM树,或者它可能会更改源所给的节点。
IllegalArgumentException
-如果
Result
类型不匹配
Source
类型的,如果
Source
是一个XML工件,执行无法验证(例如,处理指令)。
SAXException
- 如果
ErrorHandler
抛出
SAXException
或发现致命错误,并且
ErrorHandler
返回正常。
IOException
- 如果验证器正在处理SAXSource
,底层XMLReader
抛出IOException
。
NullPointerException
- 如果
source
参数是
null
。
validate(Source source)
public abstract void setErrorHandler(ErrorHandler errorHandler)
ErrorHandler
以接收在validate
方法调用期间validate
错误。
错误处理程序可用于在验证期间自定义错误处理过程。 当设置ErrorHandler
时,验证期间发现的错误将首先发送到ErrorHandler
。
错误处理程序可以通过从处理程序中抛出SAXException
来立即中止进一步验证。 或者例如它可以在屏幕上打印错误,并尝试通过从ErrorHandler
正常返回来继续验证
如果任何Throwable
选自抛出ErrorHandler
,所述的呼叫者validate
方法将被抛出相同Throwable
对象。
Validator
不允许抛出SAXException
没有首先报告给ErrorHandler
。
当ErrorHandler
为空时,执行将表现为如下设置以下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
}
}
当创建一个新的Validator
对象时,最初该字段设置为null。
errorHandler
- 要设置的新的错误处理程序。
此参数可以为null。
public abstract ErrorHandler getErrorHandler()
ErrorHandler
设置为此Validator
。
setErrorHandler(ErrorHandler)
方法最后设置的对象,如果该方法从未调用,则为null,因为此Validator
已创建。
setErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver
以在验证集中定制资源分辨率。
Validator
使用LSResourceResolver
,当需要定位外部资源的同时进行验证,虽然完全是什么构成“定位外部资源”取决于每种架构语言。
当LSResourceResolver
为空时,实现将表现为如下设置以下LSResourceResolver
:
class DumbLSResourceResolver implements LSResourceResolver
{
public LSInput
resolveResource(
String publicId, String systemId, String baseURI) {
return null; // always return null
}
}
如果一个88550533051583抛出一个RuntimeException
(或其派生类的实例),那么Validator
将中止解析,并且validate
方法的调用者将收到相同的RuntimeException
。
当创建一个新的Validator
对象时,最初该字段设置为null。
resourceResolver
- 要设置的新资源解析器。
此参数可以为null。
public abstract LSResourceResolver getResourceResolver()
LSResourceResolver
设置为Validator
。
setResourceResolver(LSResourceResolver)
方法最后设置的对象,如果该方法从未调用,则为null,因为此Validator
已创建。
setErrorHandler(ErrorHandler)
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是任何完全限定的URI。 Validator
可以识别功能名称,但暂时无法返回其值。 某些特征值可能仅在特定上下文中可用,例如在验证之前,期间或之后。
实施者是免费(并被鼓励)发明自己的功能,使用自己的URI建立的名称。
name
- 功能名称,它是非空的完全限定URI。
SAXNotRecognizedException
- 如果功能值无法分配或检索。
SAXNotSupportedException
- 当Validator
识别功能名称,但此时无法确定其值。
NullPointerException
- name参数为null时。
setFeature(String, boolean)
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
功能可用于控制Validator
解析模式的方式,尽管Validator
不需要识别任何特定的功能名称。
功能名称是任何完全限定的URI。 Validator
可以公开特征值,但无法更改当前值。 一些特征值可以是不可变的或可变的仅在特定的上下文中,例如验证之前,期间或之后。
name
- 特征名称,它是非空的完全限定URI。
value
- 要素的值(true或false)。
SAXNotRecognizedException
- 如果无法分配或检索到特征值。
SAXNotSupportedException
- Validator
识别功能名称但无法设置请求的值时。
NullPointerException
- name参数为null时。
getFeature(String)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的URI。 Validator
可以识别属性名称,但无法更改当前值。 某些属性值可能仅在特定上下文中是不可变的或可变的,例如验证之前,之中或之后。
实现JAXP 1.5或更高版本的所有实现都需要支持XMLConstants.ACCESS_EXTERNAL_DTD
和XMLConstants.ACCESS_EXTERNAL_SCHEMA
属性。
访问源或模式文件中的外部DTD仅限于XMLConstants.ACCESS_EXTERNAL_DTD
属性指定的协议 。 如果由于此属性的限制,在验证期间访问被拒绝,则validate(Source)
将被抛出validate(Source)
方法。
由schemaLocation属性访问外部引用集仅限于XMLConstants.ACCESS_EXTERNAL_SCHEMA
属性指定的协议 。 如果访问由于此属性的限制而在验证期间被拒绝,则88550533642626将被抛出validate(Source)
方法。
name
- 属性名称,它是非空的完全限定的URI。
object
- 该资源的请求值。
SAXNotRecognizedException
- 如果不能分配或检索属性值。
SAXNotSupportedException
- 当Validator
识别属性名称但无法设置请求的值时。
NullPointerException
- name参数为null时。
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的URI。 Validator
可以识别属性名称,但暂时无法返回其值。 某些属性值可能仅在特定上下文中可用,例如验证之前,期间或之后。
Validator
不需要识别任何特定的属性名称。
实施者是免费的(并被鼓励)发明自己的属性,使用自己的URI建立的名称。
name
- 属性名称,它是非空的完全限定的URI。
SAXNotRecognizedException
- 如果属性值无法分配或检索。
SAXNotSupportedException
- 当XMLReader识别属性名称,但无法确定其值在此时。
NullPointerException
- name参数为null时。
setProperty(String, Object)