共用方式為


使用 XmlReader 讀取屬性

屬性在下列三種節點類型中是被允許的:

  • Element
  • XmlDeclaration
  • DocumentType 宣告

對於項目而言,透過屬性的移動是不同於讀取 XmlDeclarationDocumentType 宣告中的屬性值。

讀取項目的屬性

當位於 element 節點中時,MoveToAttribute 方法允許您使用項目的屬性清單。MoveToAttribute 被呼叫之後,節點屬性 (例如 NameNamespaceURIPrefix 等等) 會反映它的屬性,而不是它包含的項目。

屬性並不需要總是在項目中指定。DTD 或結構描述可以定義項目中屬性的預設值。例如,如果 <!ATTLIST e a CDATA "123"> 在 DTD 中,當項目「e」中的屬性「a」沒有在 XML 文件中定義時,項目「e」的屬性「a」會被指派成「123」的值。當使用在屬性之間移動的方法時,從 DTD 或結構描述中接收值的屬性就會像在 XML 資料流中給定值的屬性。有一種程式設計的方法可以決定屬性如何接收值,也就是利用 IsDefault 屬性。IsDefault 屬性會傳回 true,如果目前的節點是屬性,而且屬性並未在 XML 資料流中定義,而是來自 DTD 中的預設屬性宣告。

注意 根據使用讀取器的類型而有不,這個屬性並不總是適用。

下列表格顯示 IsDefault 屬性可以傳回的值。

XmlReader 實作 傳回值
XmlTextReader false,因為在此沒有 DTD 資訊。
XmlValidatingReader 如果目前節點是屬性,而它的值是由 DTD 或結構描述中定義的預設值所產生,則傳回 true。如果屬性值明確的在 XML 資料流中指定,則傳回 false
XmlNodeReader 如果 DTD 在 XmlDocument 中定義,則傳回 true。其他情形則傳回 false
XsltReader false,因為在 XPath 資料模型中沒有公開 DTD 資訊 (DOCTYPE 節點)。

當位於屬性時,GetAttribute 方法用來擷取屬性值。

其他節點類型的屬性

XmlTextReaderXmlValidatingReader 只會在 ElementXmlDeclarationDocumentType 節點中公開屬性。實作 XmlReader 類別時,對於 XmlDeclaration 節點類型來說,VersionStandaloneEncoding 屬性會以 XmlDeclarationValue 屬性字串傳回。Value 屬性無法當做 string.Empty 傳回。如果它是空的,XmlDocument DOM 類別與其他可能依據這個資訊的類別無法從 XmlReader 載入。

請參閱

使用 XmlReader 讀取 XML | XmlReader 中目前節點位置 | XmlReader 上的屬性設定 | 使用 XmlNameTable 和 XmlReader 來比較物件 | 讀取項目和屬性內容 | 使用 XmlReader 略過內容 | EntityReference 讀取和展開 | 比較 XmlReader 和 SAX 讀取器 | 使用 XmlTextReader 讀取 XML 資料 | 使用 XmlNodeReader 讀取節點樹狀結構 | 使用 XmlValidatingReader 驗證 XML | 自訂的 XML 讀取器建立 | XmlReader 類別 | XmlReader 成員 | XmlNodeReader 類別 | XmlNodeReader 成員 | XmlTextReader 類別 | XmlTextReader 成員 | XmlValidatingReader 類別 | XmlValidatingReader 成員