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。