共用方式為


使用 XmlResolver 解析資源

更新: November 2007

XmlReader 類別使用 XmlResolver 來解析外部 DTD、實體及結構描述。XmlReader 類別預設會使用沒有使用者認證的 XmlUrlResolver。藉由設定 XmlResolver 屬性並將 XmlReaderSettings 物件傳遞至 Create 方法,可以指定要使用的 XmlResolver

下列程式碼會建立 XmlReader 執行個體,該執行個體會使用具有預設認證的 XmlUrlResolver

' Create a resolver with default credentials.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials

' Set the reader settings object to use the resolver.
settings.XmlResolver = resolver

' Create the XmlReader object.
Dim reader as XmlReader = XmlReader.Create("https://ServerName/data/books.xml", settings)
// Create a resolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;

// Set the reader settings object to use the resolver.
settings.XmlResolver = resolver;

// Create the XmlReader object.
XmlReader reader = XmlReader.Create("https://ServerName/data/books.xml", settings);
// Create a resolver with default credentials.
XmlUrlResolver^ resolver = gcnew XmlUrlResolver;
resolver->Credentials = System::Net::CredentialCache::DefaultCredentials;

 // Set the reader settings object to use the resolver.
 settings->XmlResolver = resolver;

// Create the XmlReader object.
XmlReader^ reader = XmlReader::Create( L"https://ServerName/data/books.xml", settings );

如果 books.xml 檔案包含外部 DTD,XmlReader 會以下列方式處理它。若要解析 DTD,XmlReader 會呼叫 GetEntity 方法來取得實體的資料流表示。如果 DTD 的 URI 是相對 URI,則 XmlReader 會呼叫 ResolveUri 方法,並為指定的 relativeUri 及 baseUri 傳回絕對 URI。如果 XmlUrlResolver 不知道如何解析指定的 URI,則會傳回 null 參考。

GetEntity 方法會適當地使用 Credentials 屬性中的資訊來取得資源的存取。由於安全性原因,沒有針對此屬性的 get 存取子。當覆寫 XmlResolver 時,GetEntity 是利用 Credentials 屬性中認證資訊的方法。

解析所有其他 XML 資源與解析 DTD 很相似。XmlResolver 只需要知道如何交涉與外部資源的連接,並傳回內容的資料流表示。它是向可轉譯資料流之 XmlResolver 發出呼叫的物件。

請參閱

概念

從檔案讀取時將驗證認證提供給 XmlResolver

存取 XmlReader 的外部資源

XSL 處理期間解析外部資源

其他資源

解析由 URI 命名的外部 XML 資源