javax.xml.validation

java.lang.Object
  继承者 javax.xml.validation.Validator

public abstract class Validator
     
extends Object

根据 Schema 检查 XML 文档的处理器。

Validator 对象不是线程安全的,也不能重入。换句话说,应用程序负责确保在任意给定时刻不能有多个线程同时使用 Validator 对象,且当调用 validate 方法时,应用程序不能以递归方式调用 validate 方法。

从以下版本开始:
1.5

构造方法摘要
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
 

构造方法详细信息

Validator

protected Validator()
派生类的构造方法。

构造方法不执行任何操作。

派生类必须创建具有 null ErrorHandlernull LSResourceResolverValidator 对象。

方法详细信息

reset

public abstract void reset()

将此 Validator 重置为其初始配置。

Validator 被重置为通过 Schema.newValidator() 创建它时的状态。reset() 在设目标是允许重用现有的 Validator,从而节省与创建新的 Validator 相关的资源。

不保证重置的 Validator 具有相同的 LSResourceResolverErrorHandler Object,例如 Object.equals(Object obj)。但保证具有功能相等的 LSResourceResolverErrorHandler


validate

public void validate(Source source)
              throws SAXException,
                     IOException
验证指定的输入。

这只是 validate(Source source, Result result)resultnull)的一个便捷方法。

参数:
source - 要验证的 XML。该参数必须为 XML 文档或 XML 元素,不可以为 null。为了向后兼容,试图验证文档或元素以外的任何内容的所得结果都由实现决定。实现必须能识别并处理输入,否则将抛出 IllegalArgumentException。
抛出:
IllegalArgumentException - 如果 Source 是实现无法验证的 XML 人为因素(例如,一个处理指令)。
SAXException - 如果 ErrorHandler 抛出 SAXException,或者发现致命错误且 ErrorHandler 正常返回。
IOException - 如果验证器正在处理 SAXSource 且底层 XMLReader 抛出了 IOException
NullPointerException - 如果 sourcenull
另请参见:
validate(Source source, Result result)

validate

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)

setErrorHandler

public abstract void setErrorHandler(ErrorHandler errorHandler)
设置 ErrorHandler 以接收在 validate 方法调用期间遇到的错误。

错误处理程序可用于自定义验证期间的错误处理过程。当设置 ErrorHandler 时,验证期间发现的错误将首先发送到 ErrorHandler

错误处理程序通过抛出来自处理程序的 SAXException 可以立即中止进一步的验证。例如,它可以将错误打印到屏幕上,并尝试通过从 ErrorHandler 正常返回来继续该验证。

如果从 ErrorHandler 抛出任何 Throwable,则 validate 方法的调用者将接收相同的 Throwable 对象。

Validator 没有先向 ErrorHandler 报告之前,不能抛出 SAXException

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
     }
 }
 

当创建新 Validator 对象时,此字段在初始化时被设置为 null。

参数:
errorHandler - 要设置的新错误处理程序。此参数可以为 null。

getErrorHandler

public abstract ErrorHandler getErrorHandler()
获取设置为此 Validator 的当前 ErrorHandler

返回:
此方法返回通过 setErrorHandler(ErrorHandler) 方法设置的最后一个对象,如果自从创建此 Validator 以来一直未调用该方法,则返回 null。
另请参见:
setErrorHandler(ErrorHandler)

setResourceResolver

public abstract void setResourceResolver(LSResourceResolver resourceResolver)
设置 LSResourceResolver 以自定义验证期间的资源解析。

在验证期间,Validator 在需要查找外部资源时使用 LSResourceResolver,虽然“查找外部资源”的准确含义取决于每种模式语言。

LSResourceResolver 为 null 时,实现的行为就好像设置了以下 LSResourceResolver 一样。

 class DumbLSResourceResolver implements LSResourceResolver {
     public LSInput resolveResource(
         String publicId, String systemId, String baseURI) {
         
         return null; // always return null
     }
 }
 

如果 LSResourceResolver 抛出 RuntimeException(或其派生类的实例),则 Validator 将中止解析,且 validate 方法的调用者将接收相同的 RuntimeException

当创建新 Validator 对象时,此字段在初始化时被设置为 null。

参数:
resourceResolver - 要设置的新资源解析器。此参数可以为 null。

getResourceResolver

public abstract LSResourceResolver getResourceResolver()
获取设置为此 Validator 的当前 LSResourceResolver

返回:
此方法返回通过 setResourceResolver(LSResourceResolver) 方法设置的最后一个对象,如果自从创建此 Validator 以来一直未调用该方法,则返回 null。
另请参见:
setErrorHandler(ErrorHandler)

getFeature

public boolean getFeature(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
查找功能标志的值。

功能名称是任何完全限定的 URI。Validator 有可能识别功能名称,但暂时不能返回其值。某些功能值可能只有在特定上下文中才能使用,例如在验证前、验证中或验证之后。

实现者可随意选择(鼓励)创建自己的功能,方法是使用在它们自己的 URI 上构建的名称。

参数:
name - 功能名称,它是非 null 的完全限定 URI。
返回:
功能的当前值(true 或 false)。
抛出:
SAXNotRecognizedException - 如果不能分配或检索功能值。
SAXNotSupportedException - 当 Validator 可以识别功能名称但不能确定它此时的值时。
NullPointerException - 当 name 参数为 null 时。
另请参见:
setFeature(String, boolean)

setFeature

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)

setProperty

public void setProperty(String name,
                        Object object)
                 throws SAXNotRecognizedException,
                        SAXNotSupportedException
设置属性值。

属性名称是任何完全限定的 URI。Validator 有可能识别属性名称,但不能更改当前值。某些属性值可能只有在特定上下文中才是不可变的或可变的,例如在验证前、验证中或验证之后。

Validator 无需识别设置任何指定的属性名称。

参数:
name - 属性名称,它是非 null 的完全限定 URI。
object - 所请求的属性值。
抛出:
SAXNotRecognizedException - 如果不能分配或检索属性值。
SAXNotSupportedException - 当 Validator 可以识别属性名称,但不能设置请求的值时。
NullPointerException - 当 name 参数为 null 时。

getProperty

public Object getProperty(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
查找属性值。

属性名称是任何完全限定的 URI。Validator 有可能识别属性名称,但暂时不能返回其值。某些属性值可能只有在特定上下文中才能使用,例如在验证前、验证中或验证之后。

Validator 无需识别任何指定的属性名称。

实现者可随意选择(鼓励)创建自己的属性,方法是使用在它们自己的 URI 上构建的名称。

参数:
name - 属性名称,它是非 null 的完全限定 URI。
返回:
属性的当前值。
抛出:
SAXNotRecognizedException - 如果不能分配或检索属性值。
SAXNotSupportedException - 当 XMLReader 可以识别属性名称,但不能确定它此时的值时。
NullPointerException - 当 name 参数为 null 时。
另请参见:
setProperty(String, Object)