public interface EntityResolver
org.xml.sax.EntityResolver |
Known Indirect Subclasses |
用于解析实体的基本界面。
This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.
如果SAX应用程序需要为外部实体实施自定义处理,则必须实现此接口并使用 setEntityResolver
方法向SAX驱动程序注册实例。
然后,XML阅读器将允许应用程序在包含它们之前拦截任何外部实体(包括外部DTD子集和外部参数实体,如果有的话)。
许多SAX应用程序不需要实现此接口,但对于从数据库或其他专用输入源构建XML文档的应用程序或使用非URL的URI类型的应用程序来说,它尤其有用。
以下解析程序将为系统标识符为“http://www.myhost.com/today”的实体提供特殊字符流的应用程序:
import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; public class MyResolver implements EntityResolver { public InputSource resolveEntity (String publicId, String systemId) { if (systemId.equals("http://www.myhost.com/today")) { // return a special input source MyReader reader = new MyReader(); return new InputSource(reader); } else { // use the default behaviour return null; } } }
应用程序还可以使用此接口将系统标识符重定向到本地URI或在目录中查找替换(可能通过使用公共标识符)。
Public methods |
|
---|---|
abstract InputSource |
resolveEntity(String publicId, String systemId) 允许应用程序解析外部实体。 |
InputSource resolveEntity (String publicId, String systemId)
允许应用程序解析外部实体。
解析器将在打开除顶层文档实体之外的任何外部实体之前调用此方法。 这些实体包括DTD中引用的外部DTD子集和外部参数实体(无论是哪种情况,只有当解析器读取外部参数实体时)以及文档元素内引用的外部一般实体(如果解析器读取外部一般实体)。 应用程序可能会请求解析器找到实体本身,它使用替代URI,或者它使用应用程序提供的数据(作为字符或字节输入流)。
应用程序编写者可以使用此方法将外部系统标识符重定向到安全和/或本地URI,在目录中查找公共标识符或从数据库或其他输入源(包括例如对话框)读取实体, 。 XML和SAX都不指定使用公共或系统ID来解析资源的首选策略。 但是,SAX指定如何解释此方法返回的任何InputSource,并且如果没有返回,则系统ID将作为URL取消引用。
如果系统标识符是一个URL,那么SAX解析器必须在将其报告给应用程序之前将其完全解析。
Parameters | |
---|---|
publicId |
String : The public identifier of the external entity being referenced, or null if none was supplied. |
systemId |
String : The system identifier of the external entity being referenced. |
Returns | |
---|---|
InputSource |
An InputSource object describing the new input source, or null to request that the parser open a regular URI connection to the system identifier. |
Throws | |
---|---|
SAXException |
Any SAX exception, possibly wrapping another exception. |
IOException |
A Java-specific IO exception, possibly the result of creating a new InputStream or Reader for the InputSource. |
也可以看看: