共用方式為


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 類別,但建議您使用 XmlReader 方法建立Create實例。

預設設定

如果您使用 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 進行驗證。 DtdProcessingParse
ValidationTypeDTD
數據必須根據 XML 架構進行驗證。 ValidationTypeSchema
使用SchemasXmlSchemaSet進行驗證。 請注意, XmlReader 不支援 XML-Data 縮減 (XDR) 架構驗證。
數據必須根據內嵌 XML 架構進行驗證。 ValidationTypeSchema
ValidationFlagsProcessInlineSchema
打字支援。 ValidationTypeSchema
Schemas XmlSchemaSet去使用。

XmlReader 不支援 XML-Data 縮減 (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