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