System.Xml.XmlTextReader 類別
本文提供此 API 參考文件的補充備註。
注意
建議您使用 XmlReader.Create 方法來建立XmlReader實例,以利用新功能。
XmlTextReader 提供 XML 數據流的正向唯讀存取權。 所謂目前節點,是指讀取器定位所在的節點。 讀取器會使用任何讀取方法和屬性來進階,以反映目前節點的值。
這個類別會實作 XmlReader 並符合 W3C 可延伸標記語言 (XML) 1.0 和 XML 建議中的命名空間。 XmlTextReader
提供下列功能:
強制執行格式正確的 XML 規則。
XmlTextReader
不提供數據驗證。DocumentType
檢查節點的格式是否正確。XmlTextReader
會檢查 DTD 的格式是否正確,但不會使用 DTD 進行驗證。對於 為的NodeType節點,會傳回單一空白
EntityReference
節點(也就是 Value 屬性為String.Empty
)。XmlNodeType.EntityReference
注意
DTD 中實體的實際宣告稱為 Entity
節點。 當您參考數據中的這些節點時,這些節點稱為 EntityReference
節點。
- 不會展開預設屬性。
XmlTextReader
由於 不會執行數據驗證所需的額外檢查,因此可提供快速格式正確的剖析器。
若要執行資料驗證,請使用驗證 XmlReader。
若要從 XmlDocument讀取 XML 資料, 請使用 XmlNodeReader。
XmlTextReader
在 XmlException XML 剖析錯誤上擲回 。 擲回例外狀況之後,讀取器的狀態無法預測。 例如,回報的節點類型可能與目前節點的實際節點類型不同。 ReadState使用屬性來檢查讀取器是否處於錯誤狀態。
安全性考量
以下是使用 XmlTextReader 類別時要考慮的事項。
擲回 XmlTextReader 的例外狀況可能會揭露您不想要反升至應用程式的路徑資訊。 應用程式必須捕捉例外狀況並予以適當處理。
DTD 處理預設會啟用。 如果您擔心拒絕服務問題,或處理不受信任的來源,請停用 DTD 處理。 將 DtdProcessing 屬性設定為 Prohibit 以停用 DTD 處理。
如果已啟用 DTD 處理,則可使用 XmlSecureResolver 限制 XmlTextReader 可存取的資源。 您還可以設計應用程式,讓 XML 處理具有記憶體和時間限制。 例如,在 ASP.NET 應用程式中設定逾時限制。
XML 資料可以包含外部資源的參考,例如 DTD 檔案。 依預設,外部資源會使用不具使用者認證的 XmlUrlResolver 物件來解析。 您可以透過執行下列其中一項作業,進一步保護它:
藉由將 XmlTextReader 屬性設為 XmlResolver 物件,限制 XmlSecureResolver 可以存取的資源。
藉由將 XmlReader 屬性設為 XmlResolver,來禁止
null
開啟外部資源。
XML 資料可以包含需要相當長時間來處理的大量屬性、命名空間宣告、巢狀項目等。 若要限制傳送至 XmlTextReader的輸入大小,請建立自定義 IStream 實作並提供 。XmlTextReader
ReadValueChunk方法可用來處理大型數據流。 此方法每次會讀取較少數量的字元,而不是為整個值配置單一字串。
依預設不會展開一般實體。 當呼叫 ResolveEntity 方法時,會展開一般實體。