共用方式為


System.Xml.XmlReader.Create 方法

本文提供此 API 參考文件的補充備註。

大部分的多 Create 載都包含 settings 接受 XmlReaderSettings 對象的參數。 您可以使用這個物件來:

  • 指定您想要在物件上 XmlReader 支援哪些功能。
  • XmlReaderSettings重複使用物件來建立多個讀取器。 您可以使用相同設定來建立具有相同功能的多個讀取器。 或者,您可以修改 實例上的 XmlReaderSettings 設定,並使用一組不同的功能來建立新的讀取器。
  • 將功能新增至現有的 XML 讀取器。 Create 方法可以接受其他 XmlReader 物件。 基礎 XmlReader 物件可以是使用者定義的讀取器、 XmlTextReader 物件,或您想要新增其他功能的另一個 XmlReader 實例。
  • 充分利用 XML 1.0(第四版)建議的更佳一致性檢查和合規性等功能,這些建議僅適用於XmlReader靜態Create方法所建立的物件。

注意

雖然 .NET 包含 類別的具體實XmlReader作,例如 XmlTextReaderXmlNodeReaderXmlValidatingReader 類別,但建議您使用 Create 方法建立XmlReader實例。

預設設定

如果您使用 Create 不接受 XmlReaderSettings 物件的多載,則會使用下列預設讀取器設定:

設定 預設
CheckCharacters true
ConformanceLevel ConformanceLevel.Document
IgnoreComments false
IgnoreProcessingInstructions false
IgnoreWhitespace false
LineNumberOffset 0
LinePositionOffset 0
NameTable null
DtdProcessing Prohibit
Schemas 空白的 XmlSchemaSet 物件
ValidationFlags ProcessIdentityConstraints 啟用
ValidationType None
XmlResolver null

常見案例的 設定

以下是 XmlReaderSettings 您應該為一些一般 XML 讀取器案例設定的屬性。

需求 設定
數據必須是格式正確的 XML 檔。 ConformanceLevelDocument
數據必須是格式正確的 XML 剖析實體。 ConformanceLevelFragment
數據必須針對 DTD 進行驗證。 DtdProcessing 移至 Parse
ValidationTypeDTD
數據必須根據 XML 架構進行驗證。 ValidationType 移至 Schema
SchemasXmlSchemaSet要用於驗證的 。 請注意, XmlReader 不支援 XML-Data Reduced (XDR) 架構驗證。
數據必須根據內嵌 XML 架構進行驗證。 ValidationType 移至 Schema
ValidationFlagsProcessInlineSchema
輸入支援。 ValidationType 移至 Schema
SchemasXmlSchemaSet要使用的 。

XmlReader 不支援 XML-Data Reduced (XDR) 架構驗證。

非同步程式設計

在同步模式中,方法 Create 會從檔案、數據流或文字讀取器的緩衝區讀取第一個數據區塊。 如果 I/O 作業失敗,這可能會擲回例外狀況。 在異步模式中,第一個 I/O 作業會與讀取作業一起發生,因此讀取作業發生時將會擲回例外狀況。

安全性考量

根據預設,會 XmlReader 使用 XmlUrlResolver 沒有使用者認證的 對象來開啟資源。 這表示 XML 讀取器預設可以存取不需要認證的任何位置。 XmlResolver使用 屬性來控制資源的存取:

範例

此範例會建立 XML 讀取器,以去除微不足道的空格符、等量批注,以及執行片段層級一致性檢查。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
settings.IgnoreWhitespace = true;
settings.IgnoreComments = true;
XmlReader reader = XmlReader.Create("books.xml", settings);
Dim settings As New XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
settings.IgnoreWhitespace = true
settings.IgnoreComments = true
Dim reader As XmlReader = XmlReader.Create("books.xml", settings)

下列範例使用 XmlUrlResolver 具有預設認證的 來存取檔案。

// Set the reader settings.
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreComments = true;
settings.IgnoreProcessingInstructions = true;
settings.IgnoreWhitespace = true;
' Set the reader settings.
Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.IgnoreComments = true
settings.IgnoreProcessingInstructions = true
settings.IgnoreWhitespace = true
// 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("http://ServerName/data/books.xml", settings);
' 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("http://ServerName/data/books.xml", settings)

下列程式代碼會將讀取器實例包裝在另一個讀取器內。

XmlTextReader txtReader = new XmlTextReader("bookOrder.xml");
XmlReaderSettings settings = new XmlReaderSettings();
settings.Schemas.Add("urn:po-schema", "PO.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader reader = XmlReader.Create(txtReader, settings);
Dim txtReader As XmlTextReader = New XmlTextReader("bookOrder.xml")
Dim settings As New XmlReaderSettings()
settings.Schemas.Add("urn:po-schema", "PO.xsd")
settings.ValidationType = ValidationType.Schema
Dim reader As XmlReader = XmlReader.Create(txtReader, settings)

此範例會鏈結讀取器以新增 DTD 和 XML 架構驗證。

XmlReaderSettings settings = new XmlReaderSettings();
settings.ValidationType = ValidationType.DTD;
XmlReader inner = XmlReader.Create("book.xml", settings); // DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd");
settings.ValidationType = ValidationType.Schema;
XmlReader outer = XmlReader.Create(inner, settings);  // XML Schema Validation
Dim settings As New XmlReaderSettings()
settings.ValidationType = ValidationType.DTD
Dim inner As XmlReader = XmlReader.Create("book.xml", settings) ' DTD Validation
settings.Schemas.Add("urn:book-schema", "book.xsd")
settings.ValidationType = ValidationType.Schema
Dim outer As XmlReader = XmlReader.Create(inner, settings)  ' XML Schema Validation