使用 XmlTextReader 讀取 XML 資料
XmlTextReader 類別是 XmlReader 的實作,而且會透過 XML 文字提供剖析器。 它強制使用 XML 必須格式正確。 它既不是驗證剖析器,也不是非驗證剖析器,因為它並未使用文件類型定義 (DTD) 或結構描述資訊。 它可以讀取在區塊中的文字,或是從資料流中讀取字元。
注意事項 |
---|
在 .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"?> 含有可設定文件編碼的編碼屬性。 XmlTextReader 具有 Encoding 屬性,該屬性會傳回 XML 宣告的編碼屬性中所找到的字元編碼。 若找不到 encoding 屬性,文件的預設值會設為 UTF-8 或 UTF-16,視資料流的頭兩個位元組而定。
如果讀取外部資源,例如使用 DTD 來展開實體參考或是結構描述檔案,編碼會設定為外部參考中找到的編碼值。 如果外部參考中找不到編碼,預設值會設定為 UTF-8 或 UTF-16。 XmlTextReader 支援許多編碼,因此它會使用 Encoding 類別。 因此,該類別所支援的所有編碼,也都會受到 XmlTextReader 的支援。 唯一不受支援的編碼,是將 <?xml 序列對應至非 UTF-8 之其他位元組值的編碼,像是 UTF-7 和 EBCDIC。