|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object javax.xml.validation.Validator
public abstract class Validator
根据 Schema
检查 XML 文档的处理器。
Validator 对象不是线程安全的,也不能重入。换句话说,应用程序负责确保在任意给定时刻不能有多个线程同时使用 Validator
对象,且当调用 validate
方法时,应用程序不能以递归方式调用 validate
方法。
构造方法摘要 | |
---|---|
protected |
Validator() 派生类的构造方法。 |
方法摘要 | |
---|---|
abstract ErrorHandler |
getErrorHandler() 获取设置为此 Validator 的当前 ErrorHandler 。 |
boolean |
getFeature(String name) 查找功能标志的值。 |
Object |
getProperty(String name) 查找属性值。 |
abstract LSResourceResolver |
getResourceResolver() 获取设置为此 Validator 的当前 LSResourceResolver 。 |
abstract void |
reset() 将此 Validator 重置为其初始配置。 |
abstract void |
setErrorHandler(ErrorHandler errorHandler) 设置 ErrorHandler 以接收在 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) 验证指定输入并将扩充的验证结果发送到指定输出。 |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
protected Validator()
构造方法不执行任何操作。
派生类必须创建具有 null
ErrorHandler
和 null
LSResourceResolver
的 Validator
对象。
方法详细信息 |
---|
public abstract void reset()
将此 Validator
重置为其初始配置。
Validator
被重置为通过 Schema.newValidator()
创建它时的状态。reset()
在设目标是允许重用现有的 Validator
,从而节省与创建新的 Validator
相关的资源。
不保证重置的 Validator
具有相同的 LSResourceResolver
或 ErrorHandler
Object
,例如 Object.equals(Object obj)
。但保证具有功能相等的 LSResourceResolver
和 ErrorHandler
。
public void validate(Source source) throws SAXException, IOException
这只是 validate(Source source, 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 |
||||
---|---|---|---|---|
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
时,验证器可以只是将来自
DOMSource
的相同 DOM 节点传递到
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
方法调用期间遇到的错误。
错误处理程序可用于自定义验证期间的错误处理过程。当设置 ErrorHandler
时,验证期间发现的错误将首先发送到 ErrorHandler
。
错误处理程序通过抛出来自处理程序的 SAXException
可以立即中止进一步的验证。例如,它可以将错误打印到屏幕上,并尝试通过从 ErrorHandler
正常返回来继续该验证。
如果从 ErrorHandler
抛出任何 Throwable
,则 validate
方法的调用者将接收相同的 Throwable
对象。
在 Validator
没有先向 ErrorHandler
报告之前,不能抛出 SAXException
。
当 ErrorHandler
为 null 时,实现的行为就好像设置了以下 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 } }
当创建新 Validator
对象时,此字段在初始化时被设置为 null。
errorHandler
- 要设置的新错误处理程序。此参数可以为 null。
public abstract ErrorHandler getErrorHandler()
Validator
的当前
ErrorHandler
。
setErrorHandler(ErrorHandler)
方法设置的最后一个对象,如果自从创建此
Validator
以来一直未调用该方法,则返回 null。
setErrorHandler(ErrorHandler)
public abstract void setResourceResolver(LSResourceResolver resourceResolver)
LSResourceResolver
以自定义验证期间的资源解析。
在验证期间,Validator
在需要查找外部资源时使用 LSResourceResolver
,虽然“查找外部资源”的准确含义取决于每种模式语言。
当 LSResourceResolver
为 null 时,实现的行为就好像设置了以下 LSResourceResolver
一样。
class DumbLSResourceResolver implementsLSResourceResolver
{ publicLSInput
resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
如果 LSResourceResolver
抛出 RuntimeException
(或其派生类的实例),则 Validator
将中止解析,且 validate
方法的调用者将接收相同的 RuntimeException
。
当创建新 Validator
对象时,此字段在初始化时被设置为 null。
resourceResolver
- 要设置的新资源解析器。此参数可以为 null。
public abstract LSResourceResolver getResourceResolver()
Validator
的当前
LSResourceResolver
。
setResourceResolver(LSResourceResolver)
方法设置的最后一个对象,如果自从创建此
Validator
以来一直未调用该方法,则返回 null。
setErrorHandler(ErrorHandler)
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
功能名称是任何完全限定的 URI。Validator
有可能识别功能名称,但暂时不能返回其值。某些功能值可能只有在特定上下文中才能使用,例如在验证前、验证中或验证之后。
实现者可随意选择(鼓励)创建自己的功能,方法是使用在它们自己的 URI 上构建的名称。
name
- 功能名称,它是非 null 的完全限定 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
- 功能名称,它是非 null 的完全限定 URI。
value
- 所请求的功能值(true 或 false)。
SAXNotRecognizedException
- 如果不能分配或检索功能值。
SAXNotSupportedException
- 当
Validator
可以识别功能名称,但不能设置请求的值时。
NullPointerException
- 当 name 参数为 null 时。
getFeature(String)
public void setProperty(String name, Object object) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的 URI。Validator
有可能识别属性名称,但不能更改当前值。某些属性值可能只有在特定上下文中才是不可变的或可变的,例如在验证前、验证中或验证之后。
Validator
无需识别设置任何指定的属性名称。
name
- 属性名称,它是非 null 的完全限定 URI。
object
- 所请求的属性值。
SAXNotRecognizedException
- 如果不能分配或检索属性值。
SAXNotSupportedException
- 当
Validator
可以识别属性名称,但不能设置请求的值时。
NullPointerException
- 当 name 参数为 null 时。
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
属性名称是任何完全限定的 URI。Validator
有可能识别属性名称,但暂时不能返回其值。某些属性值可能只有在特定上下文中才能使用,例如在验证前、验证中或验证之后。
Validator
无需识别任何指定的属性名称。
实现者可随意选择(鼓励)创建自己的属性,方法是使用在它们自己的 URI 上构建的名称。
name
- 属性名称,它是非 null 的完全限定 URI。
SAXNotRecognizedException
- 如果不能分配或检索属性值。
SAXNotSupportedException
- 当 XMLReader 可以识别属性名称,但不能确定它此时的值时。
NullPointerException
- 当 name 参数为 null 时。
setProperty(String, Object)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。