读取属性

更新:November 2007

XmlReader 类提供了各种方法和属性来读取属性。 属性在元素上最常见。 但是,XML 声明和文档类型节点上也允许使用属性。

读取元素的属性

在位于某个元素节点上时,使用 MoveToAttribute 方法可以浏览该元素的属性列表。 调用了 MoveToAttribute 之后,节点属性(例如 NameNamespaceURIPrefix 等)将反映该属性的属性,而不是其所属的包含元素的属性。

下表介绍专门为处理属性而设计的方法和属性。

成员名

说明

AttributeCount

获取元素的属性列表。

GetAttribute

获取属性的值。

HasAttributes

获取一个值,该值指示当前节点是否有任何属性。

IsDefault

获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的属性。

Item

获取指定属性的值。

MoveToAttribute

移动到指定的属性。

MoveToElement

移动到拥有当前属性节点的元素。

MoveToFirstAttribute

移动到第一个属性。

MoveToNextAttribute

移动到下一个属性。

ReadAttributeValue

将属性值分析为一个或多个 Text、EntityReference 或 EndEntity 节点。

任何常规的 XmlReader 方法和属性也可以用于处理属性。 例如,在 XmlReader 位于某个属性上之后,NameValue 属性将反映该属性的值。 也可以使用任何内容 Read 方法来获取属性的值。

读取其他节点类型的属性

处理元素节点的属性是最常见的方案。 XML 声明和文档类型声明上也可以使用属性。

说明:

XmlReader 位于某个处理指令节点上时,Value 属性将返回整个文本内容。 处理指令节点中的项不会被作为属性对待。 这些项不能使用 GetAttributeMoveToAttribute 方法读取。

XML 声明节点

在位于某个 XML 声明节点上时,Value 将以单个字符串的形式返回版本、独立声明和编码信息。 在某些读取器上,还可以以属性的形式公开版本、编码和独立声明信息。

说明:

通过 Create 方法、XmlTextReaderXmlValidatingReader 类创建的 XmlReader 对象以属性的形式公开版本、独立声明和编码项。

文档类型节点

XmlReader 位于某个文档类型节点上时,GetAttribute 方法和 Item 属性可以用于返回 SYSTEM 和 PUBLIC 文本的值。 例如,调用 reader.GetAttribute("PUBLIC") 将返回 PUBLIC 值。

示例

以下示例使用 AttributeCount 属性读取某个元素的所有属性。

' Display all attributes.
If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  Dim i As Integer
  For i = 0 To (reader.AttributeCount - 1)
    Console.WriteLine("  {0}", reader(i))
  Next i
  ' Move the reader back to the element node.
  reader.MoveToElement() 
End If
// Display all attributes.
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  for (int i = 0; i < reader.AttributeCount; i++) {
    Console.WriteLine("  {0}", reader[i]);
  }
  // Move the reader back to the element node.
  reader.MoveToElement(); 
}

以下示例在 While 循环中使用 MoveToNextAttribute 属性读取某个元素的所有属性。

If reader.HasAttributes Then
  Console.WriteLine("Attributes of <" + reader.Name + ">")
  While reader.MoveToNextAttribute()
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value)
  End While
  ' Move the reader back to the element node.
  reader.MoveToElement()
End If
if (reader.HasAttributes) {
  Console.WriteLine("Attributes of <" + reader.Name + ">");
  while (reader.MoveToNextAttribute()) {
    Console.WriteLine(" {0}={1}", reader.Name, reader.Value);
  }
  // Move the reader back to the element node.
  reader.MoveToElement();
}

以下示例按名称获取属性的值。

reader.ReadToFollowing("book")
Dim isbn As String = reader.GetAttribute("ISBN")
Console.WriteLine("The ISBN value: " + isbn)
reader.ReadToFollowing("book");
string isbn = reader.GetAttribute("ISBN");
Console.WriteLine("The ISBN value: " + isbn);

请参见

概念

用 XmlReader 读取 XML