共用方式為


XmlValidatingReader 的驗證型別

ValidationType 屬性會決定 XmlValidatingReader 執行的驗證類型。 在呼叫 Read 方法之前,您必須先設定這個屬性。 如果驗證必須使用外部文件類型定義 (DTD) 或結構描述,就會使用 XmlResolver 屬性。

注意事項注意事項

XmlValidatingReader 類別在 .NET Framework 2.0 版 中已過時。您可以使用 XmlReaderSettings 類別和 Create 方法來建立驗證的 XmlReader 執行個體。如需詳細資訊,請參閱使用 XmlReader 驗證 XML 資料

ValidationType 列舉型別

ValidationType 屬性可以設定為其中一個 ValidationType 列舉值。 下列章節將描述 ValidationType 值。

ValidationType.Auto

這是 ValidationType 屬性的預設值。 下表顯示當 ValidationType 屬性設定為 Auto 時的驗證規則。

DTD 或結構描述

ValidationType.Auto

無 DTD 或結構描述

剖析而不驗證 XML。 不會有例外狀況擲回。 不提供任何型別資訊。

DTD

執行 DTD 驗證。 展開預設屬性和實體。 只有在使用 (展開) 一般實體的情況下才會載入和剖析它們。 不提供任何型別資訊。

XML 結構描述 (參照或內嵌)

執行 XML 結構描述定義語言 (XSD) 驗證。 使用結構描述進行驗證。 展開預設屬性。 提供型別資訊。

XDR 結構描述 (參照或內嵌)

執行 XML 資料精簡 (XDR) 結構描述驗證。 使用結構描述進行驗證。 展開預設屬性。 提供型別資訊。

DTD 和 XML 結構描述或 XDR 結構描述 (參照或內嵌)

根據第一次出現的驗證型別執行 DTD/XML 結構描述/XDR 驗證。 DTD 驗證永遠優先於其他驗證型別。

ValidationType.DTD

若指定了 ValidationType.DTD 值,XmlValidatingReader 就會根據 DTD 驗證文件。 下表顯示當 ValidationType 屬性設定為 ValidationType.DTD 時的驗證規則。

DTD 或結構描述

ValidationType.DTD

無 DTD 或結構描述

在根項目傳回 No DTD found 警告。 不會有例外狀況擲回。 不提供任何型別資訊。

DTD

執行 DTD 驗證。 展開預設屬性和實體。 只有在使用 (展開) 一般實體的情況下才會載入和剖析它們。 不提供任何型別資訊。

XML 結構描述 (參照或內嵌)

在根項目傳回 No DTD found 警告。 對於混合驗證型別,若找到結構描述,就會擲回 XmlException

XDR 結構描述 (參照或內嵌)

在根項目傳回 No DTD found 警告。 對於混合驗證型別,若找到結構描述,就會擲回 XmlException

DTD 和 XML 結構描述或 XDR 結構描述 (參照或內嵌)

執行 DTD 驗證。 展開預設屬性和實體。

ValidationType.Schema

如果設定了 ValidationType.Schema 值,XmlValidatingReader 會根據 XML 結構描述 (包括內嵌結構描述) 來驗證文件。 下表顯示當 ValidationType 屬性設定為 ValidationType.Schema 時的驗證規則。

DTD 或結構描述

ValidationType.Schema

無 DTD 或結構描述

針對每個項目傳回 No schema found 警告。

DTD

如果是混合驗證型別,就會擲回 XmlException

XML 結構描述 (參照或內嵌)

執行 XML 結構描述驗證。 使用結構描述進行驗證。 從結構描述展開預設屬性。 提供型別資訊。

XDR 結構描述 (參照或內嵌)

如果是混合驗證型別,就會擲回 XmlException

DTD 和 XML 結構描述或 XDR 結構描述 (參照或內嵌)

執行 XML 結構描述驗證。 從結構描述展開預設屬性。 提供型別資訊。 如果找到了 DTD 或 XDR 結構描述,會針對混合驗證型別擲回 XmlException

ValidationType.XDR

如果設定了 ValidationType.XDR 值,XmlValidatingReader 就會根據 XDR 結構描述 (包括內嵌結構描述) 來驗證文件。 下表顯示當 ValidationType 屬性設定為 ValidationType.XDR 時的驗證規則。

DTD 或結構描述

ValidationType.XDR

無 DTD 或結構描述

傳回未發生驗證的最後警告。

DTD

如果是混合驗證型別,就會擲回 XmlException

XML 結構描述 (參照或內嵌)

如果是混合驗證型別,就會擲回 XmlException

XDR 結構描述 (參照或內嵌)

執行 XDR 驗證。 使用結構描述進行驗證。 從結構描述展開預設屬性。 提供型別資訊。

DTD 和 XML 結構描述或 XDR 結構描述 (參照或內嵌)

執行 XDR 驗證。 從結構描述展開預設屬性。 提供型別資訊。 如果找到了 DTD 或 XML 結構描述,則會針對混合驗證型別擲回 XmlException

ValidationType.None

ValidationType.None 值會建立非驗證剖析器,這個剖析器符合全球資訊網協會 (W3C) 可延伸標記語言 (XML) 1.0 版建議事項。 接著會報告預設屬性,並可解析一般實體。 不會有任何驗證錯誤擲回。 下表顯示當 ValidationType 屬性設定為 ValidationType.None 時的驗證規則。

DTD 或結構描述

ValidationType.None

無 DTD 或結構描述

剖析而不驗證 XML。 不會有例外狀況擲回。 不提供任何型別資訊。

DTD

建立符合 XML 1.0 的非驗證剖析器。 不會執行任何 DTD 驗證。 從 DTD 展開預設屬性和實體。 不提供任何型別資訊。

XML 結構描述 (參照或內嵌)

剖析而不驗證 XML。 不會有例外狀況擲回。 不會從結構描述展開預設屬性。 不提供任何型別資訊。

XDR 結構描述 (參照或內嵌)

剖析而不驗證 XML。 不會有例外狀況擲回。 不會從結構描述展開預設屬性。 不提供任何型別資訊。

DTD 和 XML 結構描述或 XDR 結構描述 (參照或內嵌)

建立符合 XML 1.0 的非驗證剖析器。 不會執行任何 DTD 驗證。 從 DTD 展開預設屬性和實體。 不提供任何型別資訊。

如果在第一個 Read 方法之後設定了 ValidationType 屬性,則 XmlValidatingReader 會擲回 InvalidOperationException

請參閱

概念

使用 XmlReader 讀取 XML

其他資源

使用 XmlReader 類別