|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
public interface EntityResolver
用於解析實體的基本介面。
此模組(包括源程式碼和文檔)在公共域中,同時 沒有擔保。有關更多資訊,請參閱http://www.saxproject.org。
如果 SAX 應用程序需要實作自定義處理外部實體,則必須實作此介面並使用 setEntityResolver
方法向 SAX 驅動器註冊一個實例。
然後 XML 閱讀器將允許應用程序在包含外部實體之前截取任何外部實體(包括外部 DTD 子集和外部參數實體,如果有)。
許多 SAX 應用程序不需要實作此介面,但對於從資料庫或其他特定的輸入源中建構 XML 文檔的應用程序,或者對於使用 URI 型別(而不是 URL )的應用程序,這特別有用。
下面的解析器將使用系統標識符 "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,或者在目錄中尋找替換(可能使用公共標識符)。
XMLReader.setEntityResolver(org.xml.sax.EntityResolver)
,
InputSource
方法摘要 | |
---|---|
InputSource |
resolveEntity(String publicId,
String systemId)
允許應用程序解析外部實體。 |
方法詳細資訊 |
---|
InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException
解析器將在打開任何外部實體(頂級文檔實體除外)前調用此方法。此類別實體包括在 DTD 內參考的外部 DTD 子集和外部參數實體(無論哪種情形,僅在在解析器都讀取外部參數實體時)和在文檔元素內參考的外部通用實體(如果解析器讀取外部通用實體)。應用程序可以請求解析器本身定位實體、使用另外的 URI或者使用應用程序提供的資料(作為字元或位元組輸入串流)。
應用程序編寫者可以使用此方法將外部系統標識符重定向到安全的和/或本地的 URI,以便在目錄中尋找公共標識符或從資料庫或其他輸入源(其中包括對話框)中讀取實體。XML 和 SAX 都不為使用公共或系統 ID 解析資源指定首選策略。但是,SAX 指定了如何解釋通過此方法返回的任何 InputSource,並指定如果未返回,則系統 ID 將被重新參考為 URL。
如果系統標識符是 URL,則 SAX 解析器必須在將它報告給應用程序之前完整解析它。
publicId
- 被參考的外部實體的公共標識符,如果未提供,則為 null。systemId
- 被參考的外部實體的系統標識符。
SAXException
- 任何 SAX 異常,可能包裹另外的異常。
IOException
- 特定於 Java 的 IO 異常,可能是由於為 InputSource 創建新的 InputStream 或 Reader 所導致的。InputSource
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。