Share via


使用 XmlTextReader 讀取 XML 資料

XmlTextReader 類別是 XmlReader 的實作,並可提供 XML 文字的剖析器。它強制實行 XML 必須語式正確。它既不是驗證剖析器,也不是非驗證剖析器,因為它並未使用文件類型定義 (DTD) 或結構描述資訊。它可以讀取在區塊中的文字,或是從資料流中讀取字元。

Note注意事項

在 Microsoft .NET Framework 2.0 版本 中,建議您使用 XmlReaderSettings 類別與 Create 方法來建立 XmlReader 執行個體。如此可讓您充分利用 .NET Framework 2.0 所推出的所有新功能。如需詳細資訊,請參閱建立 XML 讀取器

概觀

XmlTextReader 提供了下列功能:

  • 強制實行 XML 必須語式正確。

  • 檢查 DTD 是否語式正確。但它不會使用 DTD 進行驗證或加入預設屬性。若 EntityHandling 屬性設為 ExpandEntities,或在 EntityReference 節點上呼叫 ResolveEntity 方法,則會使用 DTD 進行實體擴充。

  • EntityHandling 屬性設為 ExpandCharEntities 時 (此為預設值),以 EntityReference 節點的形式傳回未擴充的實體參考。若未在 DTD 中定義實體參考,讀取器就不會發生錯誤,除非您在節點上呼叫 ResolveEntity 方法。

  • 提供一個可將新行與屬性值的 XML 正規化關閉的選項。正規化預設為關閉。

  • 不會根據 DTD 或結構描述進行驗證。

  • 提供快速的 XML 剖析器,因為 XmlTextReader 不會因為驗證檢查作業而產生額外負荷。

XmlTextReader 可以從不同的輸入讀取資料,例如資料流物件、TextReader 與辨識本機檔案位置或網站的 URL。

XmlTextReader 會使用 XmlResolver 來尋找外部資源 (如 DTD),因此它可以檢查 DTD 以確認其格式是否正確。如需 XmlResolver 的詳細資訊,請參閱使用 XmlResolver 解析資源

編碼宣告 <?xml version="1.0" encoding="ISO-8859-5"?> 含有可設定文件編碼的 encoding 屬性。XmlTextReader 具有一項 Encoding 屬性,可傳回在 XML 宣告的 encoding 屬性中找到的字元編碼。若找不到 encoding 屬性,文件的預設值會設為 UTF-8 或 UTF-16,視資料流的頭兩個位元組而定。

如果讀取外部資源,例如使用 DTD 來展開實體參考或是結構描述檔案,編碼會設定為外部參考中找到的編碼值。若在外部參考中未發現任何編碼,預設值會設為 UTF-8 或 UTF-16。XmlTextReader 支援許多種編碼,因為它使用的是 Encoding 類別。因此,該類別所支援的所有編碼,也都會受到 XmlTextReader 的支援。唯一不受支援的編碼,是將 <?xml 順序對應至非 UTF-8 之其他位元組值的編碼,像是 UTF-7 和 EBCDIC。

請參閱

概念

使用 XmlReader 讀取 XML

其他資源

使用 XmlReader 類別