public interface EntityResolver
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文件从数据库或其他专门的输入源是特别有用的,或URI类型以外的其他网址,使用的应用程序。
下面的解析将为系统标识符”HTTP实体的特殊字符流中的应用:/ / www.myhost。COM /今天:
进口org.xml.sax.entityresolver;进口org.xml.sax.inputsource;公共课myresolver实现entityresolver {公共inputsource resolveentity(字符串publicid,字符串systemid){如果(systemid。等于(“HTTP:/ / www.myhost。COM /今天”)){/返回一个特殊的输入源myreader读者=新myreader();返回新的inputsource(读者);其他{ }使用默认的行为返回null;}}}
该应用程序还可以使用这个接口来重定向系统标识符本地URI或查找目录替换(可能利用公共标识符)。
XMLReader.setEntityResolver(org.xml.sax.EntityResolver)
,
InputSource
Modifier and Type | Method and Description |
---|---|
InputSource |
resolveEntity(String publicId, String systemId)
允许应用程序解析外部实体。
|
InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
解析器将调用此方法,然后打开任何外部实体,除了顶层文档实体。这些实体包括外部DTD子集和外部参数实体引用在DTD(在任何情况下,只有当解析器读取外部参数实体),和外部通用实体引用文档中的元素(如果解析器读取外部一般实体)。应用程序可以请求解析器定位实体本身,它使用一个替代的URI,或者使用应用程序提供的数据(如字符或字节输入流)。
应用作者可以使用此方法将外部系统标识符的安全和/或当地的URI查找公共标识符在一个目录,或从数据库或其他输入源读取一个实体(包括,例如,一个对话框)。无论是XML和萨克斯指定使用公共或系统IDS解决资源优先政策。然而,萨克斯指定如何解释任何inputsource此方法返回的,而且如果没有回来,那么系统的ID将被引用作为一个URL。
如果系统标识符是一个URL,SAX解析器必须充分报告之前,它的应用解决了。
publicId
-公众的外部实体引用的标识符,如果提供的是无或空。
systemId
-外部实体引用标识系统。
SAXException
-萨克斯例外,可能是包装的另一个例外。
IOException
- java具体IO异常,可能创造新的inputsource InputStream或Reader的结果。
InputSource
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.