共用方式為


使用 XmlReader 檢查資料一致性

依預設,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 資料