共用方式為


使用 XmlReader 進行資料一致性檢查

更新: November 2007

依預設,Create 方法建立的 XmlReader 物件會比 XmlTextReader 實作更一致。依預設,Create 方法建立的 XmlReader 物件支援下列功能:

  • 將新行字元標準化。

  • 展開實體。

  • 加入預設屬性。

XmlReaderSettings.CheckCharactersXmlReaderSettings.ConformanceLevel 屬性可讓您指定要在已建立之 XmlReader 物件上啟用的一致性檢查型別。

CheckCharacters 設定

XmlReaderSettings 類別上的 CheckCharacters 屬性會指示讀取器檢查字元,並在發現任何字元不屬於合法 XML 字元的範圍時擲回 XmlException。啟用字元檢查時,可確保:

預設會啟用字元檢查。如果讀取器處理文字資料,則它會始終檢查 XML 名稱是否有效,即使 CheckCharacters 屬性設為 false 也如此。

ConformanceLevel 設定

XmlReaderSettings 類別上的 ConformanceLevel 屬性會設定 XmlReader,以檢查並確保讀取的資料流遵守一組特定規則集。根據指定的一致性層級,來檢查 XML 資料,以查看其是否符合格式正確之 XML 1.0 文件或文件片段的規則。如果資料不一致,則會擲回 XmlException。預設設定為 ConformanceLevel.Document。

注意事項:

如果設定讀取器支援 ConformanceLevel.Fragment,但 XML 資料包含文件類型定義 (DTD),則會擲回 XmlException。存在 DTD 時,XML 1.0 版建議事項會要求文件層級的一致性。

ConformanceLevel 值

說明

Document

XML 資料符合格式正確的 XML 1.0 文件規則。此檢查層級可確保任何處理器都可使用當做 XML 1.0 文件 (英文) 讀取的資料流。

讀取器會檢查下列項目:

  • 最上層項目不可具有除 XML 宣告、文件類型定義 (DTD)、項目、註解、泛空白字元或處理指示之外的任何節點。

  • XML 資料必須恰好具有一個最上層項目節點。

Fragment

XML 資料符合格式正確之 XML 1.0 文件片段的規則。

此設定接受在最上層具有多個根項目或文字節點的 XML 資料。此檢查層級可確保任何處理器都可使用當做 XML 1.0 外部剖析實體 (英文) 讀取的資料流。

注意事項:

片段不允許使用 DTD。

Auto

讀取器會依據內送資料決定要套用的一致性檢查層級。

如果 XML 資料包含 DTD 資訊,則會套用文件一致性檢查。

如果 XML 資料包含下列其中一項,則會套用片段一致性檢查:

  • 根層級具有文字、CDATA 或實體參考節點。

  • 根層級有多個項目。

  • 根層級沒有任何項目。

如果存在衝突 (如根層級存在文字節點及 DTD),則會擲回 XmlException

當使用 Create 方法向現有 XmlReader 加入其他功能時,此設定可以用於包裝案例。在此情況下,ConformanceLevel.Auto 不會加入任何新的一致性檢查。一致性檢查會留給被包裝的 XmlReader

XmlTextReader、XmlValidatingReader 及 XmlNodeReader 物件

XmlTextReaderXmlValidatingReaderXmlNodeReader 物件搭配使用時,ConformanceLevel 設定會有下列行為。

範例

下列程式碼會建立一個讀取器,其會強制執行片段層級一致性。

Dim settings as XmlReaderSettings = new XmlReaderSettings()
settings.ConformanceLevel = ConformanceLevel.Fragment
Dim reader as XmlReader = XmlReader.Create(new StringReader(xmlString), settings)
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(new StringReader(xmlString), settings);

請參閱

概念

使用 XmlReader 讀取 XML

其他資源

使用 XmlReader 驗證 XML 資料