读取属性
更新:November 2007
XmlReader 类提供了各种方法和属性来读取属性。 属性在元素上最常见。 但是,XML 声明和文档类型节点上也允许使用属性。
读取元素的属性
在位于某个元素节点上时,使用 MoveToAttribute 方法可以浏览该元素的属性列表。 调用了 MoveToAttribute 之后,节点属性(例如 Name、NamespaceURI、Prefix 等)将反映该属性的属性,而不是其所属的包含元素的属性。
下表介绍专门为处理属性而设计的方法和属性。
成员名 |
说明 |
---|---|
获取元素的属性列表。 |
|
获取属性的值。 |
|
获取一个值,该值指示当前节点是否有任何属性。 |
|
获取一个值,该值指示当前节点是否是从 DTD 或架构中定义的默认值生成的属性。 |
|
获取指定属性的值。 |
|
移动到指定的属性。 |
|
移动到拥有当前属性节点的元素。 |
|
移动到第一个属性。 |
|
移动到下一个属性。 |
|
将属性值分析为一个或多个 Text、EntityReference 或 EndEntity 节点。 |
任何常规的 XmlReader 方法和属性也可以用于处理属性。 例如,在 XmlReader 位于某个属性上之后,Name 和 Value 属性将反映该属性的值。 也可以使用任何内容 Read 方法来获取属性的值。
读取其他节点类型的属性
处理元素节点的属性是最常见的方案。 XML 声明和文档类型声明上也可以使用属性。
说明: |
---|
在 XmlReader 位于某个处理指令节点上时,Value 属性将返回整个文本内容。 处理指令节点中的项不会被作为属性对待。 这些项不能使用 GetAttribute 或 MoveToAttribute 方法读取。 |
XML 声明节点
在位于某个 XML 声明节点上时,Value 将以单个字符串的形式返回版本、独立声明和编码信息。 在某些读取器上,还可以以属性的形式公开版本、编码和独立声明信息。
说明: |
---|
通过 Create 方法、XmlTextReader 和 XmlValidatingReader 类创建的 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);