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

XmlTextReaderXmlException XML 剖析錯誤上擲回 。 擲回例外狀況之後,讀取器的狀態無法預測。 例如,回報的節點類型可能與目前節點的實際節點類型不同。 ReadState使用屬性來檢查讀取器是否處於錯誤狀態。

安全性考量

以下是使用 XmlTextReader 類別時要考慮的事項。

  • 擲回 XmlTextReader 的例外狀況可能會揭露您不想要反升至應用程式的路徑資訊。 應用程式必須捕捉例外狀況並予以適當處理。

  • DTD 處理預設會啟用。 如果您擔心拒絕服務問題,或處理不受信任的來源,請停用 DTD 處理。 將 DtdProcessing 屬性設定為 Prohibit 以停用 DTD 處理。

    如果已啟用 DTD 處理,則可使用 XmlSecureResolver 限制 XmlTextReader 可存取的資源。 您還可以設計應用程式,讓 XML 處理具有記憶體和時間限制。 例如,在 ASP.NET 應用程式中設定逾時限制。

  • XML 資料可以包含外部資源的參考,例如 DTD 檔案。 依預設,外部資源會使用不具使用者認證的 XmlUrlResolver 物件來解析。 您可以透過執行下列其中一項作業,進一步保護它:

  • XML 資料可以包含需要相當長時間來處理的大量屬性、命名空間宣告、巢狀項目等。 若要限制傳送至 XmlTextReader的輸入大小,請建立自定義 IStream 實作並提供 。XmlTextReader

  • ReadValueChunk方法可用來處理大型數據流。 此方法每次會讀取較少數量的字元,而不是為整個值配置單一字串。

  • 依預設不會展開一般實體。 當呼叫 ResolveEntity 方法時,會展開一般實體。